Kirim email Outlook dengan lampiran ke daftar pengguna di Excel dengan python
Aug 16 2020
Saya dapat mengirim email menggunakan outlook dengan skrip di bawah ini, tetapi jika saya mencoba mengirim lampiran itu memberi kesalahan.
Nama File_Email.xlsx
NAME EMAIL
Roy [email protected]
Jack [email protected]
Skrip Python
import win32com.client as win32
import pandas as pd
email_list = pd.read_excel(r'C:\Users\roy\Name_Email.xlsx')
names = email_list['NAME']
emails = email_list['EMAIL']
for i in range(len(emails)):
name = names[i]
email = emails[i]
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = email
mail.Subject = 'Message subject'
mail.Body = 'Hello ' + name
attachment = "hosts.txt"
mail.Attachments.Add(attachment)
mail.Send()
kesalahan yang saya dapatkan:
pywintypes.com_error: (-2147352567, 'Exception occurred.', (4096, 'Microsoft Outlook', 'Cannot find this file. Verify the path and file name are correct.', None, 0, -2147024894), None)
Nama file sudah benar, dan berada di direktori yang sama dengan skrip.
Saya juga mencoba mengubah attachment = 'hosts.txt', tetapi kesalahan yang sama. Tidak yakin apa yang hilang.
Jawaban
1 SrinathNeela Aug 16 2020 at 21:00
coba ini
from win32com.client import Dispatch
import win32com
import pandas as pd
def mailprepare():
num = range(0, 5)
for kk in num:
outlook = win32com.client.Dispatch("Outlook.Application")
for accoun in outlook.Session.Accounts:
if accoun.SmtpAddress == '[email protected]':
newaccount = accoun
break
mail = outlook.CreateItem(0)
mail._oleobj_.Invoke(*(64209, 0, 8, 0, newaccount))
data = pd.ExcelFile('D:\\path.xlsx')
sheet = data.parse('Sheet1')
name = sheet['Names'][kk]
mailto = sheet['Mails'][kk]
att = 'D:\\yourattchment.txt'
with open(att, 'r') as my_attch:
myfile=my_attch.read()
mail.To = mailto
mail.Subject = 'Subject'
mail.Body = 'mail body'+ name
mail.Attachments.Add(att)
mail.Display(True)
mail.send
mailprepare()
0m3r Aug 17 2020 at 08:25
Anda hanya menetapkan hosts.txt
ke variabel tetapi Attachments.Add sedang mencari jalur sistem file lengkap dengan nama file
Untuk mendapatkan penggunaan direktori saat ini
Contoh
import os
print(os.getcwd() + "\hosts.txt")
Atau
import os
attachment = "hosts.txt"
print(os.path.realpath(attachment))
FYI - Saya menggunakan 3.8 python
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'