回答
使用隨蟒的smtplib。請注意,這將需要您的電子郵件帳戶允許smtp,默認情況下不一定啓用。
SERVER = "your.mail.server"
FROM = "[email protected]"
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()
編輯:這個例子中使用了虛構的谷歌郵件到另一個谷歌郵件
SERVER = "smtp.google.com"
FROM = "[email protected]"
TO = ["[email protected]"] # must be a list
SUBJECT = "Hello!"
TEXT = "This is a test of emailing through smtp in google."
# 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和設置它允許smtp連接。請注意添加登錄線路以向遠程服務器進行身份驗證。原始版本不包括這一點,這是我的一個疏忽。
這不是問題。問題是關於使用Win32 API來控制Outlook – 2011-06-13 15:38:22
@Spencer Rathbun:謝謝。問題是這樣的:我的'smtp'服務器與我的電子郵件不一樣 - 因此,我需要通過我的互聯網提供商('att')「通道」我的smtp,儘管我使用的是不同的電子郵件地址(不是'att's')發送郵件。 'Outlook'已配置爲處理此問題。如果還有其他解決方案(基於非'Outlook'),也會支持這個解決方案,我很樂意聽取建議。 – user3262424 2011-06-13 18:12:53
@ user3262424那麼你的電子郵件地址與你的smtp服務器不一樣?這應該在smtp服務器上處理。它需要設置爲將不會從那裏發送的電子郵件傳遞到正確的電子郵件服務器。錯誤地設置,這可以讓垃圾郵件發送者循環通過你。但據推測,你知道涉及的IP地址,並可以將它們設置在允許列表中。 – 2011-06-13 18:24:27
檢查,有很多的例子,看到here一個。
內聯爲了便於觀察:
import win32com.client
def send_mail_via_com(text, subject, recipient, profilename="Outlook2003"):
s = win32com.client.Dispatch("Mapi.Session")
o = win32com.client.Dispatch("Outlook.Application")
s.Logon(profilename)
Msg = o.CreateItem(0)
Msg.To = recipient
Msg.CC = "moreaddresses here"
Msg.BCC = "address"
Msg.Subject = subject
Msg.Body = text
attachment1 = "Path to attachment no. 1"
attachment2 = "Path to attachment no. 2"
Msg.Attachments.Add(attachment1)
Msg.Attachments.Add(attachment2)
Msg.Send()
謝謝,這很好。問題是,Outlook不斷生成一個「警告消息」,詢問我是否想繼續或終止訪問腳本。有沒有辦法跳過這個'警報消息'? – user3262424 2011-06-13 18:08:56
@ user3262424 - 彈出窗口的確切內容是什麼? – 2011-06-13 18:23:40
我現在不在那臺電腦旁邊。通知腳本正在嘗試訪問「outlook」,並且可能是病毒等,並且我想繼續。 – user3262424 2011-06-13 18:45:46
使用pywin32:
from win32com.client import Dispatch
session = Dispatch('MAPI.session')
session.Logon('','',0,1,0,0,'exchange.foo.com\nUserName');
msg = session.Outbox.Messages.Add('Hello', 'This is a test')
msg.Recipients.Add('Corey', 'SMTP:[email protected]')
msg.Send()
session.Logoff()
謝謝。這不會產生煩人的'outlook'錯誤訊息? – user3262424 2011-06-13 18:13:44
它可能會觸發驗證新版本的Windows。不知道你會如何壓制這一點。我再也不用跑窗了。 – 2011-06-13 18:20:43
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
是一個MailItem對象。
是否有可能的HTML身體。就像一個帶圖片的電子郵件正文 – 2016-12-09 10:03:27
已更新的答案。 mail.HTMLBody讓你把它設置爲一個html字符串 – TheoretiCAL 2016-12-09 17:59:39
簡單而直接的答案!在Python 3.6.1中正確工作。 – 2017-06-21 14:00:51
我想使用的smtplib,其更容易,它不需要本地設置發送電子郵件。其他答案沒有直接幫助後,這就是我所做的。
打開Outlook在瀏覽器中;點擊右上角的設置齒輪圖標,從出現的下拉列表中選擇「選項」。 轉到'賬戶',點擊'流行和Imap', 你會看到選項:「讓設備和應用程序使用彈出」,
選擇是的選項和保存更改。
這裏是後的代碼存在;編輯需要的地方。 最重要的是在此啓用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('[email protected]', "password")
smtpObj.sendmail('[email protected]', '[email protected]', body) # Or [email protected]
smtpObj.quit()
pass
除了Win32的,如果你的公司已經建立了您網站的前景,你也可以嘗試PYTHON REST API,這是正式由微軟。 (https://msdn.microsoft.com/en-us/office/office365/api/mail-rest-operations)
這是一個我試圖使用Win32:
import win32com.client as win32
import psutil
import os
import subprocess
import sys
# Drafting and sending email notification to senders. You can add other senders' email in the list
def send_notification():
outlook = win32.Dispatch('outlook.application')
olFormatHTML = 2
olFormatPlain = 1
olFormatRichText = 3
olFormatUnspecified = 0
olMailItem = 0x0
newMail = outlook.CreateItem(olMailItem)
newMail.Subject = sys.argv[1]
#newMail.Subject = "check"
newMail.BodyFormat = olFormatHTML #or olFormatRichText or olFormatPlain
#newMail.HTMLBody = "test"
newMail.HTMLBody = sys.argv[2]
newMail.To = "[email protected]"
attachment1 = sys.argv[3]
attachment2 = sys.argv[4]
newMail.Attachments.Add(attachment1)
newMail.Attachments.Add(attachment2)
newMail.display()
# or just use this instead of .display() if you want to send immediately
newMail.Send()
# Open Outlook.exe. Path may vary according to system config
# Please check the path to .exe file and update below
def open_outlook():
try:
subprocess.call(['C:\Program Files\Microsoft Office\Office15\Outlook.exe'])
os.system("C:\Program Files\Microsoft Office\Office15\Outlook.exe");
except:
print("Outlook didn't open successfully")
#
# Checking if outlook is already opened. If not, open Outlook.exe and send email
for item in psutil.pids():
p = psutil.Process(item)
if p.name() == "OUTLOOK.EXE":
flag = 1
break
else:
flag = 0
if (flag == 1):
send_notification()
else:
open_outlook()
send_notification()
- 1. PYTHON/OUTLOOK通過PYTHON與DOCX發送電子郵件
- 2. 通過Python從特定的Outlook帳戶發送電子郵件?
- 3. 從Python發送Outlook 2010電子郵件
- 4. 通過Python發送電子郵件
- 5. 通過Python發送電子郵件
- 6. Excel自動通過Outlook發送電子郵件隨機發送
- 7. 通過Outlook中的Outlook發送電子郵件時出錯?
- 8. 如果Outlook打開,只能通過Outlook發送電子郵件
- 9. 鏈接電子郵件地址並通過outlook發送電子郵件
- 10. 如何通過Outlook通過Outlook發送電子郵件與表7
- 11. 通過VBA發送帶有附件的Outlook電子郵件
- 12. 通過Outlook從MS Project發送電子郵件
- 13. JAVA通過Outlook發送電子郵件與SWT
- 14. 節點Webkit-通過outlook打開和發送電子郵件
- 15. 從Access VBA通過Outlook發送自動電子郵件
- 16. 如何通過Outlook 2016發送HTML響應電子郵件?
- 17. 如何通過Java從Outlook發送電子郵件?
- 18. 如何使用.asp通過outlook發送電子郵件
- 19. AV發送通過Outlook電子郵件和贖回時
- 20. 錯誤雖然通過Outlook從Excel發送電子郵件VBA
- 21. 通過Outlook和OLE強力發送電子郵件
- 22. 使用Outlook通過PHP發送電子郵件梨
- 23. 使用Microsoft Outlook通過MATLAB發送電子郵件
- 24. 發送使用VBScript電子郵件通過Outlook Anywhere的
- 25. 通過MS Outlook發送電子郵件並禁用警告
- 26. Outlook截取電子郵件發送前通過粉色
- 27. 無法通過Powershell發送Outlook電子郵件
- 28. 如何通過Outlook發送電子郵件
- 29. 通過Powershell和Outlook發送電子郵件
- 30. 通過電子郵件發送Outlook 2007集成
爲什麼你要通過Outlook發送郵件? – ThiefMaster 2011-06-13 15:34:32
@ThiefMaster:我的smtp服務器與我的電子郵件不同 - 因此,我需要通過我的互聯網提供商('att')「通道」我的smtp,儘管我使用的是不同的電子郵件地址(不是' att's')發送電子郵件。 'Outlook'已配置爲處理此問題。如果還有其他解決方案(基於非'Outlook'),也會支持這個解決方案,我很樂意聽取建議。 – user3262424 2011-06-13 18:11:29
正確的解決方案是使用python的[smtplib](http://docs.python.org/library/smtplib.html#smtp-example) – ThiefMaster 2011-06-13 18:35:04