Windows中实现右键把电子书通过邮件发到kindle

不使用第三方软件,通过Windows自带的函数,可以实现右键将电子书通过电子邮件发送到kindle邮箱,从而实现kindle电子书传送功能。实现过程如下:

1. 使用bat添加右键功能

打开资源管理器,在地址中输入%APPDATA%\Microsoft\Windows\SendTo,按回车。然后在该目录,新键文件,命名为SendToKindle.bat。内容如下:

shell 复制代码
@echo off
set "PowerShellScriptPath=C:\path\to\SendToEmail.ps1"
set "EmailAccount=your_email@example.com"
set "EmailPassword=your_email_password"
set "DestinationEmail=destination_email@example.com"

powershell.exe -ExecutionPolicy Bypass -File "%PowerShellScriptPath%" "%EmailAccount%" "%EmailPassword%" "%DestinationEmail%" %*

pause

注意:最后加pause是为了能在出错失败时可以看到错误信息。

上述批处理文件中使用了一些占位符,需要根据实际情况替换它们:

  • C:\path\to\SendToEmail.ps1: 替换为您的 PowerShell 脚本文件的路径。
  • your_email@example.com: 替换为发送邮件的邮箱账号。
  • your_email_password: 替换为发送邮件的邮箱密码。
  • destination_email@example.com: 替换为目标邮箱地址。
    批处理文件将通过 PowerShell 脚本来发送邮件,并将选中的文件作为附件发送。在调用 PowerShell 脚本时,使用 %* 表示将右键菜单中选中的文件作为参数传递给 PowerShell 脚本。

使用powershell实现邮件发送功能

新建文件SendToEmail.ps1,代码如下:

powershell 复制代码
param (
    [string]$EmailAccount,
    [string]$EmailPassword,
    [string]$DestinationEmail,
    [string]$AttachmentFilePath
)

# 导入命名空间
Add-Type -AssemblyName System.Net

# 生成全局唯一的 Message-ID
function Generate-MessageID {
    return [System.Guid]::NewGuid().ToString() + "@aliyun.com"
}

# 配置发送邮件的参数
$SenderEmail = $EmailAccount
$RecipientEmail = $DestinationEmail
$Subject = (Get-Item $AttachmentFilePath).Name  # 获取文件名作为邮件主题
$Attachment = $AttachmentFilePath

# 创建邮件对象
$mailMessage = New-Object System.Net.Mail.MailMessage
$mailMessage.From = $SenderEmail
$mailMessage.To.Add($RecipientEmail)
$mailMessage.Subject = $Subject

# 添加 X-Mailer 字段
$mailMessage.Headers.Add("X-Mailer", "PowerShell Mailer")

# 手动添加 Message-ID 字段
$mailMessage.Headers.Add("Message-ID", (Generate-MessageID))

# 添加附件
if (Test-Path $Attachment) {
    $attachmentData = New-Object System.Net.Mail.Attachment($Attachment)
    $mailMessage.Attachments.Add($attachmentData)

    # 设置附件的 Content-Disposition 头信息,指定附件的显示名称
    $attachmentData.ContentDisposition.FileName = $Subject  # 替换为附件的显示名称
}

# 配置 SMTP 服务器
$smtpClient = New-Object System.Net.Mail.SmtpClient
$smtpClient.Host = "smtp.aliyun.com"  # 替换为您的 SMTP 服务器地址
$smtpClient.Port = 25  # 替换为您的 SMTP 服务器端口
$smtpClient.EnableSsl = $false
$smtpClient.Credentials = New-Object System.Net.NetworkCredential($EmailAccount, $EmailPassword)

# 发送邮件
$smtpClient.Send($mailMessage)

上面smtpClient.Host的值替换为你实际邮箱的SMTP地址,smtpClient.Port替换为对应的端口。

我在实际使用过程中,用的是阿里云的邮箱,开启Ssl的情况下,邮件一直发送失败,所以没有启用SSL。

另外,在一开始的时候,发现邮件能发送成功,但是Kindle上不显示,对比了我通过powershell发送的邮件和通过网页或客户端发送的邮件的头部信息之后,我添加了X-MailerMessage-ID,最后总算能把书籍推送到Kindle上了。我猜应该是Message-ID不可缺少的原因,但目前没有再进一步实践。

参考资料:

相关推荐
DogDaoDao10 小时前
【GitHub】System Informer:Windows 平台最强开源系统监控与调试利器
windows·程序员·开源·github·开发工具·system informer
HashFlag10 小时前
Codex配置Skill
windows·ai·mac·codex
idolao11 小时前
RayLink_v8.1.6.8安装步骤详解(附RayLink远程控制与设备码连接教程)
windows
lingx_gps13 小时前
Windows 下安装领新北斗(TracSeek)车辆动态监控系统小白指南
windows·jt808·车辆监控·主动安全·jt1078·车辆定位
2601_9583205713 小时前
【详细版教程】Windows/macOS/Linux 安装 OpenClaw 2.6.6 指南(包含安装包)
linux·运维·windows·macos·小龙虾·open claw一键安装
HackTwoHub13 小时前
可视化未授权访问批量探测工具、支持批量目标、并发扫描、SOCKS5 全局代理、CSV 导出
linux·windows·macos·网络安全·网络攻击模型
50万马克的面包15 小时前
C 语言第18讲:预处理详解
c语言·开发语言·windows
无限进步_16 小时前
简单聊聊 C++ 中的 unordered_map 和 unordered_set
c语言·开发语言·数据结构·c++·windows·哈希算法·散列表
the sun3416 小时前
共享文件夹设置:让Windows和Ubuntu能方便的传输文件
linux·windows·ubuntu
拉拉拉拉拉拉拉马17 小时前
Windows 从 0 配置 Codex CLI 并接入外部 API:以小米 MiMo 为例
windows