Python Forum
Mail sending Python - What it's wrong? - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Mail sending Python - What it's wrong? (/thread-15762.html)



Mail sending Python - What it's wrong? - airwawekz - Jan-30-2019

Hello guys, can someone help me?

What it's wrong in my code?

import pandas as pd
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

email = '[email protected]'
password = 'password'
e = pd.read_excel("Email.xlsx")
send_to_email = e['Emails'].values
subject = 'This is my blog'
messageHTML = '<p>Visit <a href="https://google.com">site<a> for some great <span style="color: #496dd0">tutorials and projects!</span><p>'
messagePlain = 'Visit for some great tutorials and projects!'

msg = MIMEMultipart('alternative')
msg['From'] = email
msg['To'] = send_to_email
msg['Subject'] = subject

msg.attach(MIMEText(messagePlain, 'plain'))
msg.attach(MIMEText(messageHTML, 'html'))

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(email, password)
text = msg.as_string()
server.sendmail(email, send_to_email, text)
server.quit()
Output:
Traceback (most recent call last):
  File "senderx.py", line 25, in <module>
    text = msg.as_string()
  File "/usr/lib/python2.7/email/message.py", line 137, in as_string
    g.flatten(self, unixfrom=unixfrom)
  File "/usr/lib/python2.7/email/generator.py", line 83, in flatten
    self._write(msg)
  File "/usr/lib/python2.7/email/generator.py", line 115, in _write
    self._write_headers(msg)
  File "/usr/lib/python2.7/email/generator.py", line 164, in _write_headers
    v, maxlinelen=self._maxheaderlen, header_name=h).encode()
  File "/usr/lib/python2.7/email/header.py", line 410, in encode
    value = self._encode_chunks(newchunks, maxlinelen)
  File "/usr/lib/python2.7/email/header.py", line 359, in _encode_chunks
    if not header:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()



RE: Mail sending Python - What it's wrong? - gontajones - Jan-30-2019

Check your line 16:
msg['To'] = send_to_email
I'm afraid that send_to_email is a list here and msg['To'] is expecting a string.
You can test it passing just a dummy email ([email protected]).
If this is the error and you still want to mail every email on this list (send_to_email) you'll have to iterate through it and send one at time.