标签: smtplib

Python 中的 HTML 电子邮件

我正在尝试使用 smtplib 发送 HTML 电子邮件。但我需要 HTML 内容有一个使用字典中的值填充的表。我确实查看了Python网站上的示例。但它没有解释如何在 HTML 中嵌入 Python 代码。有什么解决方案/建议吗?

我也看了这个问题。我可以这样格式化吗?

.format(字典名称)

python smtplib

1
推荐指数
1
解决办法
9871
查看次数

Office 365 上使用应用程序密码进行 SMTP 身份验证是否需要连接器?

我们最近在我们的帐户上启用了 MFA,该功能会向员工/客户发送自动电子邮件,因此显然我们需要一种新的方法来验证该流程。OAuth 似乎有点大材小用,所以我选择了“应用程序密码”路线,我已经通过 Gmail 等服务无缝地完成了这一过程。

但这不起作用...我收到以下错误:

smtplib.SMTPAuthenticationError: (535, b'5.7.139 身份验证失败,请求不符合成功身份验证的条件。请联系您的管理员。[CH0PR03CA0182.namprd03.prod.outlook.com]')

请注意,SMTP 身份验证已打开,并且我使用的是 STARTTLS 1.2。我见过人们传递如下参数:

SMTPSecure: 'tls'
SMTPAuth: true;
Run Code Online (Sandbox Code Playgroud)

...但我不知道是否需要这样做,因为在 MFA 切换之前它运行良好。我也不知道如何使用 smtplib 发送这些内容

有人有建议吗?有人告诉我我可能需要 SMTP 连接器?这也似乎是一个过于复杂的过程,并且在任何指导用户设置应用程序密码的微软文章中都没有提到。我的代码如下,fwiw。自从启用 MFA 以来,我没有更改任何内容:

def send_mail(recipients: str, subject: str, body: str, attachments: list = None, cc: str = None):
    credentials = get_credentials()
    smtp_srv_name = "smtp.office365.com"
    smtp_server = smtplib.SMTP(smtp_srv_name, 587)
    msg = MIMEMultipart()
    msg['Subject'] = subject
    msg['From'] = 'xxxxxxxxxxxxx'
    msg['To'] = recipients
    msg['Cc'] = cc
    msg.attach(MIMEText(body, 'plain'))
    if attachments is not None:
        for attachment in attachments:
            with …
Run Code Online (Sandbox Code Playgroud)

python smtplib office365

1
推荐指数
1
解决办法
7562
查看次数

使用Python可靠地强制返回路径

我是一名Python初级学生,所以请记住这一点.在Python脚本中,我需要设置一个与发件人地址不同的Return-Path地址.(我使用Gmail作为SMTP服务器.)

我已经对这个问题进行了大量的搜索,发现了很多"答案",但没有解决方案.我尝试了这个链接设置返回路径与Python sendmail的MIME消息,但它根本不适合我.我可以更改电子邮件收件人看到的"收件人:"地址,但是当他们点击"回复"时,它会再次返回到发送电子邮件地址.

这是我正在尝试写的功能.它工作得很好,除了我需要强制一个不同的返回路径.

#!/usr/bin/python
import smtplib
import os

from email.MIMEMultipart import MIMEMultipart  
from email.MIMEBase import MIMEBase  
from email.MIMEText import MIMEText  
from email.Utils import COMMASPACE, formatdate  
from email import Encoders  
import sap_mailserverdata as sf 

def send_mail(sent_to, subject, body_text, sent_from_addr='', sent_from_name='', files=[], cc=[], bcc=[]):  
    """Send emails with or without attachments."""  
    assert type(sent_to)==list    
    assert type(files)==list  
    assert type(cc)==list  
    assert type(bcc)==list  

    message = MIMEMultipart()
    message['From'] = sent_from_addr
    message['To'] = COMMASPACE.join(sent_to)
    message['Date'] = formatdate(localtime=True)
    message['Subject'] = subject
    message['Cc'] = COMMASPACE.join(cc)
    message.preamble = 'You …
Run Code Online (Sandbox Code Playgroud)

python email smtplib

0
推荐指数
1
解决办法
1595
查看次数

python smtplib设置超时

我尝试写小应用程序每天发送电子邮件我的服务器的状态,我使用smtplib,蝙蝠有一点问题,我不知道可以设置连接超时!即时尝试whit smtp.setdefaulttimeout(30)bat不行

def connect(host,user,password)
  try:
    smtp = smtplib.SMTP(host)
        smtp.login(user, password)
        code = smtp.ehlo()[0]
        if not (200 <= code <= 299):
            code = smtp.helo()[0]
 except:
     pass
Run Code Online (Sandbox Code Playgroud)

如何设置连接超时到此功能?谢谢

python smtplib

0
推荐指数
1
解决办法
7505
查看次数

python的smtplib不工作

尝试连接到 gmail 的 smpt 服务器,但网络无法访问

import smtplib
s=smtplib.SMTP('smtp.gmail.com',587)
Run Code Online (Sandbox Code Playgroud)

这都不起作用

import smtplib
s=smtplib.SMTP_SSL('smtp.gmail.com',587)
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

回溯(最近一次调用最后一次):

  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/smtplib.py", line 251, in __init__
(code, msg) = self.connect(host, port)
  File "/usr/lib/python2.7/smtplib.py", line 311, in connect
self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.7/smtplib.py", line 286, in _get_socket
return socket.create_connection((host, port), timeout)
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
raise err
  socket.error: [Errno 101] Network is unreachable
Run Code Online (Sandbox Code Playgroud)

python email smtplib

0
推荐指数
1
解决办法
7846
查看次数

Python Email TypeError:期望的字符串或缓冲区

在一个发送电子邮件的简单示例中:

import smtplib
from email.mime.text import MIMEText

message = MIMEText("test message")
s = smtplib.SMTP('localhost')
s.sendmail("example@example.com", ["example@example.com"], message)
Run Code Online (Sandbox Code Playgroud)

我从代码的最后一行收到以下错误:

TypeError:期望的字符串或缓冲区

我究竟做错了什么?

python smtp smtplib

0
推荐指数
1
解决办法
837
查看次数

使用变量作为电子邮件正文发送电子邮件

使用一个简单的 webscraper,我可以将我正在寻找的内容返回到我的脚本中的变量中content : content1

出于某种原因,我无法在电子邮件正文中显示内容。

我试过使用message.attach(MIMEText(mail_content, 'text')) message.attach(MIMEText(mail_content, 'html'))它没有任何区别。还导入了time模块,因为我认为脚本中的延迟可能会有所帮助,但它没有。

from selenium import webdriver
import smtplib, ssl
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import time

DRIVER_PATH = 'C:/Users\James\Downloads\chromedriver_win32\chromedriver.exe'
driver = webdriver.Chrome(executable_path=DRIVER_PATH)
driver.implicitly_wait(5)

driver.get('https://www.skysports.com/football/news')


FootballHeadlines = driver.find_elements_by_class_name("news-list__headline-link")
for elem in FootballHeadlines:
    print(elem.text)
    print(elem.get_attribute("href"))

content  = (elem.text)
content1 = (elem.get_attribute("href"))


sender_address = 'some@email'
sender_password = '**********'
receiver_email = 'someother@email'


message = MIMEMultipart()
message['From'] = sender_address
message['To'] = sender_address
message['Subject'] = 'Latest on Football' 
session = …
Run Code Online (Sandbox Code Playgroud)

python selenium smtplib

0
推荐指数
1
解决办法
73
查看次数

ValueError:消息中最多可能有 1 个 To 标头

我正在尝试编写一个非常基本的电子邮件发送脚本。这是我的代码..

import smtplib
from email.message import EmailMessage

msg = EmailMessage()
msg.set_content("Test message.")
msg['Subject'] = "Test Subject!!!"
msg['From'] = "myemail@gmail.com"

email_list = ["xyz@gmail.com", "abc@gmail.com"]

for email in email_list:
    msg['To'] = email
    server = smtplib.SMTP(host='smtp.gmail.com', port=587)
    server.starttls()
    server.login("myemail@gmail.com", "mypassword")
    server.send_message(msg)
    server.quit()
Run Code Online (Sandbox Code Playgroud)

该脚本应该将邮件发送给多个收件人,因此,我需要msg['To']在循环迭代时更改该字段,但我在下面的回溯中收到以下错误。

Traceback (most recent call last):
  File "exp.py", line 66, in <module>
    msg['To'] = email
  File "/usr/lib/python3.8/email/message.py", line 407, in __setitem__
    raise ValueError("There may be at most {} {} headers "
ValueError: There may be at most 1 To …
Run Code Online (Sandbox Code Playgroud)

python smtplib python-3.x

0
推荐指数
1
解决办法
3171
查看次数

标签 统计

python ×8

smtplib ×8

email ×2

office365 ×1

python-3.x ×1

selenium ×1

smtp ×1