Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Код на пайтон

Вася Васечкин Ученик (138), на голосовании 1 месяц назад
Хочу написать код на пайтон который сможет отправлять фото и текст на почту. Уже создал код который создает фото и называет его cam.png. Помогите, пожалуйста. Если что почта яндекс.
Голосование за лучший ответ
Дио Брандо Ученик (217) 2 месяца назад
Для отправки фотографии и текста на почту с использованием Python можно использовать модуль smtplib для работы с SMTP-сервером и модуль email для формирования сообщения.


Вот пример кода, который делает это для почты Яндекс:



Убедитесь, что у вас установлен модуль smtplib. Он входит в стандартную библиотеку Python, поэтому дополнительная установка не требуется.


Используйте следующий код:



import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email import encoders

def send_email(subject, body, image_path, to_email, from_email, password):
# Создаем сообщение
msg = MIMEMultipart()
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = subject

# Добавляем текст
msg.attach(MIMEText(body, 'plain'))

# Добавляем изображение
with open(image_path, 'rb') as image_file:
img = MIMEImage(image_file.read())
img.add_header('Content-Disposition', f'attachment; filename="{image_path}"')
msg.attach(img)

# Подключаемся к SMTP-серверу Яндекса
try:
with smtplib.SMTP('smtp.yandex.ru', 587) as server:
server.starttls() # Используем TLS
server.login(from_email, password) # Входим в аккаунт
server.send_message(msg) # Отправляем сообщение
print("Сообщение успешно отправлено!")
except Exception as e:
print(f"Ошибка при отправке сообщения: {e}")

# Параметры
subject = "Тема письма"
body = "Текст письма"
image_path = "cam.png" # Путь к изображению
to_email = "recipient@example.com" # Замените на адрес получателя
from_email = "your_email@yandex.ru" # Ваш адрес электронной почты
password = "your_password" # Ваш пароль или приложение

send_email(subject, body, image_path, to_email, from_email, password)

Важные моменты:


Замените "recipient@example.com" на адрес электронной почты получателя.

Замените "your_email@yandex.ru" на ваш адрес электронной почты Яндекс.

Замените "your_password" на ваш пароль. Если у вас включена двухфакторная аутентификация, используйте пароль приложения.

Убедитесь, что файл cam.png существует в том же каталоге, где вы запускаете скрипт или укажите полный путь к файлу.
Дио БрандоУченик (217) 2 месяца назад
Честно сам не знаю правильный он или нет но пробуйте
Sergio 2.1 Оракул (67406) 2 месяца назад
 import smtplib 
import ssl
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

# Email details
smtp_server = "smtp.yandex.ru"
port = 465
sender_email = "your_email@yandex.ru"
password = "your_password"
receiver_email = "recipient_email@example.com"
subject = "Subject of the Email"
body = "This is the body of the email."

# Create a multipart message and set headers
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = subject

# Add body to email
message.attach(MIMEText(body, "plain"))

# Open cam.png file in binary mode
filename = "cam.png"
with open(filename, "rb") as attachment:
part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())

# Encode file in ASCII characters to send by email
encoders.encode_base64(part)

# Add header as key/value pair to attachment part
part.add_header(
"Content-Disposition",
f"attachment; filename= {filename}",
)

# Add attachment to message and convert message to string
message.attach(part)
text = message.as_string()

# Send email
context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, text)
Похожие вопросы