在 python 中用 SMTP_SSL 发送邮件
Send mail with SMTP_SSL in python
我正在使用以下代码发送带有证书的邮件。我有一个来自邮件服务器的 ca-chain.cert.pem
文件。如何使用这个文件签名邮件(我必须使用这个pem文件)?
m_server = {
'username': "abc@myserver.io",
'password': "123435",
'server': "mail.myserver.io",
'port': 465,
}
message = MIMEMultipart("alternative")
message["Subject"] = "Notification"
message["From"] = "abc@myserver.io"
message["To"] = "abc@gmail.com"
email_body = "<p>test</p>"
message.attach(MIMEText(email_body, "html"))
with smtplib.SMTP_SSL(m_server['server'], m_server['port']) as server:
server.set_debuglevel(1)
server.login(m_server['username'], m_server['password'])
server.sendmail(m_server['username'], message["To"], message.as_string())
ca-chain.cert.pem文件:此文件与邮件服务器有关
-----BEGIN CERTIFICATE-----
MIIFhTCCA22....
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFnDCCA4Sg....
-----END CERTIFICATE-----
How to use this file for signing mail(I have to use this pem file)?
邮件未在 SMTP 中签名。邮件的基于证书的签名由发件人使用 PGP 或 S/MIME 完成。然后邮件服务器使用 DKIM 完成基于密钥的签名。但是各种签名方式都需要私钥,这里就不给出了。
我的猜测是给定的证书应该改为在 TLS 握手期间用于验证 SMTP 服务器。要指定证书,需要自定义 SSL 上下文,如下所示:
import ssl
ctx = ssl.create_default_context(cafile = 'the-certificates-given-to-you.pem')
with smtplib.SMTP_SSL(m_server['server'], m_server['port'], context=ctx) as server:
...
我正在使用以下代码发送带有证书的邮件。我有一个来自邮件服务器的 ca-chain.cert.pem
文件。如何使用这个文件签名邮件(我必须使用这个pem文件)?
m_server = {
'username': "abc@myserver.io",
'password': "123435",
'server': "mail.myserver.io",
'port': 465,
}
message = MIMEMultipart("alternative")
message["Subject"] = "Notification"
message["From"] = "abc@myserver.io"
message["To"] = "abc@gmail.com"
email_body = "<p>test</p>"
message.attach(MIMEText(email_body, "html"))
with smtplib.SMTP_SSL(m_server['server'], m_server['port']) as server:
server.set_debuglevel(1)
server.login(m_server['username'], m_server['password'])
server.sendmail(m_server['username'], message["To"], message.as_string())
ca-chain.cert.pem文件:此文件与邮件服务器有关
-----BEGIN CERTIFICATE-----
MIIFhTCCA22....
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFnDCCA4Sg....
-----END CERTIFICATE-----
How to use this file for signing mail(I have to use this pem file)?
邮件未在 SMTP 中签名。邮件的基于证书的签名由发件人使用 PGP 或 S/MIME 完成。然后邮件服务器使用 DKIM 完成基于密钥的签名。但是各种签名方式都需要私钥,这里就不给出了。
我的猜测是给定的证书应该改为在 TLS 握手期间用于验证 SMTP 服务器。要指定证书,需要自定义 SSL 上下文,如下所示:
import ssl
ctx = ssl.create_default_context(cafile = 'the-certificates-given-to-you.pem')
with smtplib.SMTP_SSL(m_server['server'], m_server['port'], context=ctx) as server:
...