2015-10-21 1 views
1

Я использую python 3.4.3 для отправки электронной почты, и в это время мне понадобится электронное письмо, которое будет отправлено под псевдоним. Учетная запись является учетной записью gmail, но мне нужно, чтобы я мог поместить все, что захочу, в качестве сообщения об ошибке (псевдоним) «От». Я очень усердно смотрел, как это сделать, и мне очень повезло. Учитывая количество потоков, на которые я смотрел, и реальность, которую я не получил работоспособного ответа, показывает отсутствие обсуждения этой конкретной темы. Надеюсь, это не просто так, что это очень просто, что все, кроме меня, знают, как это сделать.Отправка псевдонима (spoof) для 'from' электронной почты с использованием python smtplib

Следует отметить, что я нахожусь на машине с Windows 10, но имею доступ к машине Ubuntu и Windows 7.

import smtplib 

fromreal = '[email protected]' 
fromshow = '[email protected]' 
toaddy = ['[email protected]', '[email protected]'] 
subject = ' test' 
body = 'This is the body test' 

content = '''\ 
From: %s 
To: %s 
Subject: %s 
%s 
''' % (fromshow, ', '.join(toaddy), subject, body) 

server = 'smtp.gmail.com' 
port = 587 

mail = smtplib.SMTP(server, port) 

mail.ehlo() 
mail.starttls() 
mail.login(fromreal, 'password') 
try: 
    mail.sendmail(fromshow, toaddy, content) 
    print('E-mail sent.') 
except: 
    print('E-mail not sent.') 

mail.close() 
+1

Сервер Gmail будет * не * позволять отправлять электронную почту с поддельным отправителем. – spectras

+0

Тем не менее, вы никогда не должны использовать 'except', не указывая, какое исключение вы хотите поймать. Здесь я вполне уверен, что правильная обработка ошибок дала бы вам намек на то, что происходит неправильно. – spectras

+0

не могли бы вы помочь мне с некоторыми из этой правильной обработки ошибок ?? – dubkoidragon

ответ

2

Вы можете использовать yagmail отправить псевдоним (не меняющийся в поддельный адрес электронной почты, но, по крайней мере, псевдоним):

import yagmail 
# first is "from" arg; using a dictionary you can give an alias as value 
yag=yagmail.SMTP({fromreal:'fakealias'}, 'password') 
yag.send(toaddy, subject, body) 

Как хорошо иметь 3 линии вместо 30;)

Установить с помощью pip install yagmail.

Подробнее о множестве других функций на странице github.

Помимо прочего, вы можете использовать сценарии «без пароля» (нет необходимости вводить пароль в скрипте), очень легко отправлять HTML, встроенные изображения и вложения!

Полное описание: Я являюсь разработчиком/разработчиком yagmail.

+0

Могу ли я связаться с вами с еще несколькими вопросами? – dubkoidragon

+0

@dubkoidragon GitHub предоставляет возможность @ связаться со мной, https://github.com/kootenpv/yagmail. – PascalVKooten

+0

У кого-нибудь еще было очень нестабильное выполнение отправки почты при использовании этой функции псевдонима? Кажется, что иногда я получал почту, а иногда просто не делаю. Он молча терпит неудачу (= без ошибок, но почта не появляется в папке «Входящие»). Проверена папка спама, и вам тоже не повезло ... –

Смежные вопросы