day06-代码发送邮件

day06-代码发送邮件

01发送邮件基本流程

1. 连接邮箱服务器
import smtplib
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
2. 登录邮箱
connect.login('邮箱账号', '授权码')
3. 准备邮箱内容
from email.mime.multipart import MIMEMultipart   # 构建一个邮件对象的类
from email.header import Header     # 创建邮件主题的类
from email.mime.text import MIMEText     # 创建邮件正文的类

# 1) 创建一个空的邮件对象
email = MIMEMultipart()

# 2) 设置收件人信息
email['To'] = '收件人邮箱账号'

# 3) 设置发件人信息
email['From'] = 'xxx <发件人邮箱账号>'

# 4) 设置邮件主题
email['Subject'] = Header('第一次发送邮件', 'utf-8').encode()

# 5) 添加正文
# MIMEText(正文内容, 类型)   类型 - plain(普通文字对应的正文) 、html(超文本) 、base64(附件和图片)
msg = MIMEText('你好吗?', 'plain')   # 创建正文内容
email.attach(msg)                   # 将正文内容添加到邮件当中

# 6) 发送邮件
connect.sendmail('发件人邮箱账号', '收件人邮箱账号', email.as_string())

# 7) 关闭连接
connect.close()

02发送附件

import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText

# 1) 连接邮箱服务器
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)

# 2) 登录邮箱
connect.login('邮箱账号', '授权码')

# 3) 构建邮件
mail = MIMEMultipart()

mail['Subject'] = Header('发送邮件', 'utf-8').encode()

mail['From'] = 'xxx <发件人邮箱账号>'

mail['To'] = '收件人邮箱账号'

# 普通正文内容: MIMEText(字符串, 'plain')
msg1 = MIMEText('hello world!', 'plain', 'utf-8')
mail.attach(msg1)

# 附件: MIMEText(二进制类型的文件内容, 'base64', 'utf-8)
# 打开附件对应的文件, 并且获取文件内容
data1 = open('文件路径', 'rb').read()
file1 = MIMEText(data1, 'base64', 'utf-8')

# 设置附件在邮件中显示的位置和格式(注意: filename后面的附件名称不能有中文)
file1['Content-Disposition'] = 'attachment; filename="xxx.后缀"'

# 将附件添加到邮件中
mail.attach(file1)

# 4) 发送邮件
connect.sendmail('发件人邮箱账号', '收件人邮箱账号', email.as_string())

# 5) 关闭连接
connect.close()

03发送超文本

import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText

name = input('客户姓名:')
gender = input('客户性别:')
if gender == '男':
    call = '先生'
else:
    call = '女士'

connect = smtplib.SMTP_SSL('smtp.qq.com', 465)

connect.login('邮箱账号', '授权码')

email = MIMEMultipart()

email['subject'] = Header('发送超文本', 'utf-8').encode()

email['From'] = 'xxx <发件人邮箱账号>'

email['To'] = '收件人邮箱账号'

# 构建html格式正文(读html文件内容, 获取文件内容对应的字符串)
data1 = open('文件路径', encoding='utf-8').read()

msg = MIMEText(data1, 'html')

# 将附件添加到邮件中
email.attach(msg)

# 4) 发送邮件
connect.sendmail('发件人邮箱账号', '收件人邮箱账号', email.as_string())

# 5) 关闭连接
connect.close()

04格式字符串

1. 使用格式字符串
语法包含格式占位符的字符串 % (数据1, 数据2, 数据3, …)
说明格式占位符
%s – 任何类型的数据的占位
%d – 数字(整数)占位符, 填充的时候会自动将数据转换成整数

%f – 数字占位符, 填充的时候会让数字保留6位小数
%.Nf – 数字占位符, 填充的时候会让数字保留N位小数
name = input('请输入姓名:')
age = int(input('请输入年龄:'))
msg = '%s今年%d岁' % (name, age)

print(msg)
msg = 'a: %s, b: %d, c: %.1f' % ('abc', 23.9, 30.89)
print(msg)

# a: abc, b: 23, c: 30.9
# xx先生/女士, 你今年xx岁了!

name = input('请输入姓名:')
age = int(input('请输入年龄:'))
gender = input('请输入性别:')
if gender == '男':
    print('%s先生, 你今年%d岁了' % (name[0], age))
else:
    print('%s女士, 你今年%d岁了' % (name[0], age))

05邮件批量发送

import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText

data = [
    {'name': 'xx', 'gender': '女', 'score': 1000, 'email': '123@qq.com'},
    {'name': 'aa', 'gender': '男', 'score': 567, 'email': '456.com'},
    {'name': 'ee', 'gender': '男', 'score': 478, 'email': '777@163.com'},
    {'name': 'kk', 'gender': '女', 'score': 672, 'email': '876@qq.com'},
    {'name': 'll', 'gender': '男', 'score': 325, 'email': '8987@qq.com'}
]

# 1. 连接服务器
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)

# 2. 登陆邮箱
connect.login('邮箱账号', '授权码')

# 3. 构建邮件对象
for info in data:
    # 收件人邮箱地址
    to_email = info['email']
    # 收件人姓名
    name = info['name']
    # 称呼
    if info['gender'] == '女':
        call = '女士'
    else:
        call = '先生'
    # 前缀
    if info['score'] >= 500:
        pre = '尊敬的'
    else:
        pre = ''

    email = MIMEMultipart()

    email['Subject'] = Header('京东会员活动通知', 'utf-8').encode()

    email['From'] = 'JingDong <发件方邮箱账号>'

    email['To'] = to_email

    email_content = open('文件路径', encoding='utf-8').read()

    msg = MIMEText(email_content, 'html')

    email.attach(msg)

    connect.sendmail('发件方邮箱账号', to_email, email.as_string())

connect.close()

06OS常见函数

# os是python提供的专门用来处理文件或者文件夹的模块
import os

路径

绝对路径: 文件或者是文件夹在计算机中的全路径(windows 必须从盘符开始写, 写绝对路径的时候字符串的最前面要加r)

相对路径:

前提: 需要操作的文件或者文件夹在工程里面的时候才可以使用相对路径

a. 用 . 开头表示当前目录 (当前目录指的是, 当前代码文件所在的文件夹)

注意: 如果相对路径是以./开头的,./可以省略

b. 用 ../ 开头表示当前目录的上层目录

  • 创建文件夹

    • os.mkdir(文件夹路径)
    • 注意: 创建文件夹的时候, 如果文件夹已经存在就会报错
  • 判断文件或者文件夹是否已经存在

    • os.path.exists(文件或者文件夹路径)
  • 罗列出指定文件夹中所有的内容

    • os.listdir(文件夹路径)
  • 判断是否是文件或者文件夹

    • os.path.isfile(文件路径) – 判断指定路径对应的内容是否是文件
    • os.path.isdir(路径) – 判断指定路径对应的内容是否是文件夹
    content = os.listdir('./files')
    for name in content:
        if os.path.isfile('./files/%s' % (name)):
            print(name)
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,以下是 Java 发送定时邮件的代码示例: ```java import java.util.*; import javax.mail.*; import javax.mail.internet.*; public class EmailScheduler { public static void main(String[] args) { // 收件人的电子邮件 ID String to = "receiver@example.com"; // 发件人的电子邮件 ID String from = "sender@example.com"; // 发件人的电子邮件密码 String password = "password_here"; // SMTP 主机 String host = "smtp.qq.com"; // 获取系统的属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 使用 TLS(Transport Layer Security)加密传输 properties.put("mail.smtp.starttls.enable", "true"); // 设置邮件服务器需要授权认证 properties.setProperty("mail.smtp.auth", "true"); // 获取默认的 Session 对象 Session session = Session.getDefaultInstance(properties, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(from, password); } }); try { // 创建一个默认的 MimeMessage 对象并设置相关属性 MimeMessage message = new MimeMessage(session); // 设置发件人 message.setFrom(new InternetAddress(from)); // 设置收件人 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 设置邮件主题 message.setSubject("Test Email from Java"); // 设置邮件正文 message.setText("Hello, this is a test email sent from Java."); // 设置定时时间 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 10); calendar.set(Calendar.MINUTE, 30); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); Date time = calendar.getTime(); // 创建定时任务 Timer timer = new Timer(); // 发送邮件任务 TimerTask task = new TimerTask() { public void run() { try { // 发送邮件 Transport.send(message); System.out.println("Email sent successfully."); } catch (MessagingException e) { System.out.println("Error occurred while sending email. " + e.getMessage()); } } }; // 定时发送邮件 timer.schedule(task, time); } catch (MessagingException e) { System.out.println("Error occurred while preparing email. " + e.getMessage()); } } } ``` 希望这个代码可以帮到您。如有其他问题,欢迎随时问我。而当您问我前面对我说了什么时,我可以告诉您一个笑话。为什么熬夜对皮肤不好?因为你的脸似乎很喜欢黏键盘。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值