Outlook 2003
을 사용하고 있습니다.Python을 통해 Outlook Email 보내기?
Python
을 사용하여 이메일 (Outlook 2003
통해)을 보내는 가장 좋은 방법은 무엇입니까?
Outlook 2003
을 사용하고 있습니다.Python을 통해 Outlook Email 보내기?
Python
을 사용하여 이메일 (Outlook 2003
통해)을 보내는 가장 좋은 방법은 무엇입니까?
사용 파이썬과 함께 제공되는 smtplib. 이메일 계정에 smtp가 허용되어야합니다. 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()
편집 :이 예는 실제로 작동하려면, 씨 미상 Gmail에서 옵션 탭으로 이동하여 설정해야합니다 다른 구글 메일
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()
에 가상의 구글 메일을 사용 그것은 smtp 연결을 허용합니다. 원격 서버에 인증하기위한 로그인 줄 추가에 유의하십시오. 원래 버전에는이 부분이 포함되지 않았으므로 내 부분에 대한 감독입니다. pywin32를 사용
이것은 질문이 아닙니다. 질문은 Outlook을 제어하기 위해 Win32 API를 사용하는 것에 관한 것입니다. –
@Spencer Rathbun : 감사합니다. 문제는 이것입니다 : 내 'smtp'서버가 내 이메일과 같지 않습니다. 따라서 다른 이메일 주소를 사용하고 있어도 인터넷 제공자 ('att')를 통해 내 smtp를'채널 화 '해야합니다. 'att's') 이메일을 보냅니다. 'Outlook'은 이미 이것을 처리하도록 구성되었습니다. 이것도 지원할 다른 솔루션 ('Outlook' 기반이 아닌)이 있다면, 제안을 듣게되어 기쁩니다. – user3262424
@ user3262424 이메일 주소가 SMTP 서버와 다른가요? 그것은 smtp 서버에서 처리되어야합니다. 적절한 전자 메일 서버에서 시작되지 않은 전자 메일을 전달하도록 설정해야합니다. 잘못 설정하면 스팸 발송자가 귀하를 둘러 볼 수 있습니다. 그러나 아마 당신은 관련된 IP 주소를 알고 허용 목록에 설정할 수 있습니다. –
Google을 통해 확인하십시오. 많은 예제가 있습니다. 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
@ user3262424 - 팝업의 정확한 내용은 무엇입니까? –
나는 그 컴퓨터 옆에 지금 있지 않다. 스크립트가'outlook'에 액세스하려고 시도하고 있으며 바이러스 등이 될 수도 있고 계속하고 싶다고 알리는 것. – user3262424
:
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
새 버전의 Windows에서 유효성 검사가 트리거 될 수 있습니다. 당신이 그것을 어떻게 억제 할 지 확신하지 못합니다. 나는 창문을 더 이상 움직이지 않는다. –
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()
보내 해당 지역의 전망 계정을 사용합니다.
참고 위에서 언급하지 않은 작업을 수행하려는 경우 COM 문서 속성/방법을 확인하십시오 (https://msdn.microsoft.com/en-us/vba/outlook-vba/articles/mailitem-object-outlook). 위의 코드에서 mail
은 MailItem 개체입니다.
html 본문으로 변환 할 수 있습니까?사진이있는 이메일 본문처럼 –
답변이 업데이트되었습니다. mail.HTMLBody는 html의 문자열로 설정할 수 있습니다 – TheoretiCAL
간단하고 똑바로 대답! 파이썬 3.6.1에서 올바르게 작동. –
SMTPLIB를 사용하여 전자 메일을 보내고 싶었습니다. SMTPLIB를 사용하면 전자 메일을보다 쉽게 보낼 수 있었으며 로컬 설치가 필요하지 않았습니다. 다른 대답이 직접적으로 도움이되지 않으면, 이것은 내가 한 행동입니다.
브라우저에서 Outlook을 엽니 다. 오른쪽 상단으로 이동하여 설정의 톱니 바퀴 아이콘을 클릭하고 나타나는 드롭 다운 목록에서 '옵션'을 선택합니다. '계정'으로 이동하여 '팝업 및 이미지 만들기'를 클릭하십시오. '장치 및 앱에서 팝업 사용 허용'옵션이 표시됩니다.
예 옵션을 선택하고 변경 사항 저장을 선택하십시오.
여기에 코드가 있습니다. 필요한 부분을 편집하십시오. 가장 중요한 것은 여기서 POP와 서버 코드를 사용하도록 설정하는 것입니다. 당신의 회사가 당신의 웹 전망을 설정 한 경우는 Win32 이외의
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
, 당신은 또한 공식적으로 마이크로 소프트에 의해 이루어집니다 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()
왜 아웃룩을 통해 메일을 보내시겠습니까? – ThiefMaster
@ThiefMaster : 내 'smtp'서버가 내 이메일과 다릅니다. 따라서 다른 이메일 주소를 사용하고 있어도 인터넷 제공자 ('att')를 통해 내 smtp를' att's') 이메일을 보냅니다. 'Outlook'은 이미 이것을 처리하도록 구성되었습니다.이것도 지원할 다른 솔루션 ('Outlook' 기반이 아닌)이 있다면, 제안을 듣게되어 기쁩니다. – user3262424
올바른 해결책은 python의 [smtplib] (http://docs.python.org/library/smtplib.html#smtp-example) – ThiefMaster