एक्सेल में अजगर के साथ उपयोगकर्ताओं की सूची के अनुलग्नक के साथ आउटलुक ईमेल भेजें

Aug 16 2020

मैं नीचे स्क्रिप्ट के साथ आउटलुक का उपयोग करके ईमेल भेजने में सक्षम हूं, लेकिन अगर मैं अनुलग्नक भेजने की कोशिश करता हूं तो यह त्रुटि देता है।

फ़ाइल Name_Email.xlsx

NAME    EMAIL
Roy     [email protected]
Jack    [email protected]

पायथन लिपि

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()

त्रुटि मुझे मिल रही है:

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)

फ़ाइल का नाम सही है, और यह स्क्रिप्ट के समान निर्देशिका में है।

इसके अलावा मैंने अटैचमेंट = 'Host.txt' बदलने की कोशिश की, लेकिन वही त्रुटि। यकीन नहीं हो रहा है क्या याद आ रही है।

जवाब

1 SrinathNeela Aug 16 2020 at 21:00

इसे इस्तेमाल करे

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

आप बस hosts.txtएक चर के लिए असाइन कर रहे हैं, लेकिन संलग्न करें। एक फ़ाइल नाम के साथ पूर्ण फ़ाइल सिस्टम पथ की तलाश कर रहा है

वर्तमान निर्देशिका का उपयोग करने के लिए

उदाहरण

import os
print(os.getcwd() + "\hosts.txt")

या

import os

attachment = "hosts.txt"
print(os.path.realpath(attachment))

FYI करें - मैं 3.8 अजगर पर हूं