Python第三方库—yagmail

本文详细介绍了如何使用Python的yagmail库发送QQ邮件,包括导入库、建立SMTP连接、获取QQ邮箱授权码及发送邮件的步骤。通过示例代码展示了发送邮件的基本参数,如收件人、主题、正文和附件等。还提供了抄送、密送等高级功能的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简述

yagmail是Python的基于GMAIL / SMTP客户端的第三方库,旨在简单发送邮件
使用前应先安装

三行代码发QQ邮件

import yagmail
yag=yagmail.SMTP(user='3079****95@qq.com',password='nm************hd',host='smtp.qq.com')
yag.send(to='3580****14@qq.com',subject='practice',contents='my first yagmail exercise')

第一行导入yagmail库
第二行通过yagmail.SMTP()创建yagmail对象:user是自己的邮箱,password是自己QQ邮箱的密钥,host是smtp针对qq的服务器域名
第三行to是发送对象,subject是主题,contents是正文内容

用法

1. 导入yagmail

import yagmail

2. 建立对象连接

yag=yagmail.SMTP(user='',password='',host='')
> 	常用两种方法来建立对象连接:
	 I:用户名和密码:
	 此时你的user为你的邮箱号,如xxx@163.com;password为你的邮箱登录密码,host即为smtp.163.com
	 **注:不建议使用,因为你的密码会显示在脚本中**
	 II:用户名和密钥
	 如QQ邮箱的password即为十六位密钥,若输入qq登录密码程序会报错。host即为smtp.qq.com

QQ邮箱获取密钥方式

打开QQ邮箱,设置–账户–开启SMTP服务
在这里插入图片描述
然后按要求发送短信验证即可
在这里插入图片描述

3. 发送邮件

yag.send()

send中有多种参数可选,如下列出:

参数

  • to
    用来指定发送的对象即收件人,传递字符串格式yag.send(to='objname@mail.com')
    当指定多个发送对象时,可以用列表或元组的形式,如yag.send(to=['3577****11@qq.com','wei*******dj@163.com'])
    如果要对电子邮件地址提供别名,可以用字典形式:

    recipients={'mike@xxx.com':'MIKE','mary@xxx.com':'MARY'}
    yag.send(to=recipients)
    
  • subject
    邮件主题yag.send(subject='主题')

  • contents
    邮件内容,即正文。一般为字符串,可用列表传递多个内容yag.send(contents=['正文1','正文2'])

  • attachments
    附件yag.send(attachments='C://Users//86135//Desktop//python.txt')有多个附件时用列表

  • cc
    抄送邮件,将邮件同时发送给收件人以外的人yag.send(cc='xxx@mail.com')

  • bcc
    密送,与抄送不同的是收件人看不到其他人的邮箱地址

  • preview_only
    布尔型,表示仅预览,可以发送但对方收不到

  • header
    头部信息,传递字典参数

示例

import yagmail
import time

yag=yagmail.SMTP(user='30******95@qq.com',password='nm************hd',host='smtp.qq.com')
start=time.time()

yag.send(to='35******14@qq.com',subject='python',contents='python file',
         attachments='C://Users//86135//Desktop//python.txt')
end=time.time()

print("成功发送,耗时{:.2f}s".format(end-start))

结果:
在这里插入图片描述

### Python 处理电子邮件的第三方库 对于 Python 来说,`smtplib` 和 `imaplib` 是标准库的一部分,可以用来发送和接收邮件。然而,在实际项目中更常使用的是一些功能更为丰富的第三方库。 #### 1. `yagmail` `yagmail` 提供了一种非常简便的方式来通过 Gmail 发送带有附件的 HTML 邮件[^3]: ```python import yagmail yag = yagmail.SMTP('your_email@gmail.com') contents = ['This is the body, and here is just text http://somedomain/image.png', 'You can find an audio file attached.', '/local/path/song.mp3'] yag.send('to@someone.com', 'Subject of email', contents) ``` #### 2. `IMAPClient` 当涉及到读取邮箱中的消息时,`IMAPClient` 库提供了更加友好的 API 接口来访问 IMAP 协议下的服务器数据[^4]。 --- ### Java 处理电子邮件的第三方库 Java 生态中有多个成熟的框架可以帮助开发者高效地管理邮件服务。 #### 1. Apache Commons Email Apache Commons Email 建立在 JavaMail 上面,简化了许多常见的操作流程,比如创建复杂的内容结构、添加附件等[^5]。 ```java Email email = new SimpleEmail(); email.setHostName("smtp.googlemail.com"); email.setSmtpPort(465); email.setAuthenticator(new DefaultAuthenticator("username", "password")); email.setSSLOnConnect(true); email.setFrom("user@gmail.com"); email.setSubject("Test Mail"); email.setMsg("This is a test mail ... :-)"); email.addTo("foo@bar.com"); email.send(); ``` #### 2. Spring Framework (Spring-Mail) 作为企业级应用开发中最受欢迎的选择之一,Spring 不仅能很好地集成其他组件和服务,还自带了强大的邮件模块——Spring-Mail,它能够方便快捷地完成各种类型的邮件任务[^6]。 --- ### PHP 处理电子邮件的第三方库 PHP 社区同样拥有众多优秀的工具包可供选择。 #### 1. SwiftMailer SwiftMailer 是一款广泛应用于生产环境中的开源邮件传输类库,支持 SMTP、Sendmail 及本地邮件函数等多种方式发送邮件,并且内置了对 MIME 类型的支持以及安全编码机制[^7]。 ```php require_once 'vendor/autoload.php'; $transport = (new Swift_SmtpTransport('smtp.example.org', 25)) ->setUsername('your username') ->setPassword('your password'); $mailer = new Swift_Mailer($transport); $message = (new Swift_Message('Wonderful Subject')) ->setFrom(['john@doe.com' => 'John Doe']) ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name']) ->setBody('Here is the message itself'); $result = $mailer->send($message); ``` #### 2. PHPMailer 另一个备受欢迎的选择就是 PHPMailer,其特点在于易于上手的同时也具备高度灵活性,允许用户自定义几乎所有的参数选项[^8]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weer-wmq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值