如何通过Python发送Outlook邮件?

107 投票
9 回答
405482 浏览
提问于 2025-04-16 19:28

我正在使用 Outlook 2003

Python 通过 Outlook 2003 发送邮件的最佳方法是什么?

9 个回答

14

我想用SMTPLIB发送邮件,这样更简单,而且不需要在本地进行设置。在其他回答没有直接帮助的情况下,我做了以下步骤。

首先,打开浏览器中的Outlook;然后去右上角,点击那个齿轮图标来进入设置,接着从弹出的列表中选择“选项”。

接下来,找到“账户”,点击“Pop和Imap”,

你会看到一个选项:“允许设备和应用使用pop”,

选择“是”并保存更改。

下面是之后的代码;根据需要进行编辑。

最重要的是要启用POP功能,以及这里面的服务器代码;

import smtplib

body = 'Subject: Subject Here .\nDear ContactName, \n\n' + 'Email\'s BODY text' + '\nYour :: Signature/Innitials'
try:
    smtpObj = smtplib.SMTP('smtp-mail.outlook.com', 587)
except Exception as e:
    print(e)
    smtpObj = smtplib.SMTP_SSL('smtp-mail.outlook.com', 465)
#type(smtpObj) 
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login('me@outlook.com', "password") 
smtpObj.sendmail('sender@outlook.com', 'recipient@gmail.com', body) # Or recipient@outlook

smtpObj.quit()
pass
234
import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = 'To address'
mail.Subject = 'Message subject'
mail.Body = 'Message body'
mail.HTMLBody = '<h2>HTML Message body</h2>' #this field is optional

# To attach a file to the email (optional):
attachment  = "Path to the attachment"
mail.Attachments.Add(attachment)

mail.Send()

将会使用你本地的Outlook账户来发送邮件。

如果你想做一些上面没有提到的事情,可以查看COM文档中的属性和方法:https://msdn.microsoft.com/en-us/vba/outlook-vba/articles/mailitem-object-outlook。在上面的代码中,mail 是一个邮件项目对象。

48

如果你想用Outlook来解决这个问题,可以看看TheoretiCAL的回答

如果不是的话,可以使用Python自带的smtplib。要注意的是,这需要你的邮箱账户允许使用smtp,而这个功能默认情况下可能并没有开启。

SERVER = "smtp.example.com"
FROM = "yourEmail@example.com"
TO = ["listOfEmails"] # must be a list

SUBJECT = "Subject"
TEXT = "Your Text"

# Prepare actual message
message = """From: %s\r\nTo: %s\r\nSubject: %s\r\n\

%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)

# Send the mail
import smtplib
server = smtplib.SMTP(SERVER)
server.sendmail(FROM, TO, message)
server.quit()

编辑:这个例子使用了像RFC2606中描述的保留域名。

SERVER = "smtp.example.com"
FROM = "johnDoe@example.com"
TO = ["JaneDoe@example.com"] # must be a list

SUBJECT = "Hello!"
TEXT = "This is a test of emailing through smtp of example.com."

# Prepare actual message
message = """From: %s\r\nTo: %s\r\nSubject: %s\r\n\

%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)

# Send the mail
import smtplib
server = smtplib.SMTP(SERVER)
server.login("MrDoe", "PASSWORD")
server.sendmail(FROM, TO, message)
server.quit()

要让它在gmail上真正工作,Doe先生需要去gmail的选项标签里,设置允许smtp连接。

注意添加了登录这一行,用来验证远程服务器。原来的版本没有包括这一点,这是我疏忽了。

撰写回答