Day6-代码发送邮件

固定模板
import smtplib

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

 2、登陆邮箱
connect.login('531089602@qq.com','jnnkhltdhkwsbghe')

 3 、准备邮件内容
from email.mime.multipart import MIMEMultipart  #
from email.header import  Header
from email.mime.text import MIMEText

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

 2、设置收件人信息
email['To'] = 'y_t209@163.com'

 3、设置发件人信息
email['from'] = '531089602@qq.com<531089602@qq.com>'

 4、设置邮件主题
email['Subject'] = Header('hello!','utf-8').encode()

 5、添加正文
 MIMETxet(正文内容,类型)
 类型:plain(普通文字对应的正文),html(超文本)、base64(附件和图片)
 	a、创建正文内容
    msg = MIMEText('桐花万里丹山路','plain')
	b、将正文内容添加到邮件中
	email.attach(msg)
          
 6、正文发送
connect.sendmail('531089602@qq.com','y_t209@163.com', email.as_string())

 7、关闭邮箱
connect.close()
发送附件
——  前面固定操作不变

打开附件对应的文件,并且获取文件内容
data1 = open('fie/loop and list.pdf', 'rb').read()

创建附件对象
fie1 =  MIMEText(data1,'base64','utf-8')

设置附件在邮件中显示的为止和格式(注意:filename 后的附件名称不能有中文)
fie1['Content-Disposition'] = 'attachment; filename="Loop and list.pdf"'
# 后缀保持一致


发送超文本
 构建html格式正文
data1 = open('fie/data.html',encoding='utf-8').read() 
#html文件内容,获取文件内容对用的字符串)
msg = MIMEText(data1,'html')
mail.attach(msg)

格式字符串
'''
语法:包含格式占位符的字符串 % (数据1 、数据2、数据3、、、、)
说明:格式占位符
            %s   -  任何类型的数据的占位 
            %d   -   数字占位符,数据转换成整数
            %f    - 数字占位符(填充数字,默认保留小数点后六位)
            %.Nf    -    数字占位符,填充数字,保留小数点后 N 位)
'''

**实例:**XXX先生/女士,你今年XXX岁了!

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

注意:%s 可以用于任何类型语句后面,只有保持前后一致,且值存在可找;

邮件批量发送
data = [
    {'name': '余婷', 'gender': '女', 'score': 1000, 'email': '726550822@qq.com'},
    {'name': '张三', 'gender': '男', 'score': 567, 'email': 'y_t209@163.com'},
    {'name': '朱聪', 'gender': '男', 'score': 478, 'email': 'zhuucc@163.com'},
    {'name': '马诗雨', 'gender': '女', 'score': 672, 'email': '873925431@qq.com'},
    {'name': '李相葛', 'gender': '男', 'score': 325, 'email': '719368987@qq.com'}
]

import  smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
connect = smtplib.SMTP_SSL('smtp.qq.com',465)
connect.login('531089602@qq.com','jnnkhltdhkwsbghe')
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'] = 'Huiyuan <531089602@qq.com>'
    email['To'] = to_email

    email_content = open('fie/data.html',encoding='utf-8').read() %(pre+name[0],call,name)
    msg = MIMEText(email_content, 'html')
    email.attach(msg)

    connect.sendmail('531089602@qq.com', to_email, email.as_string())

提醒:if 在 for 循环中可重复多次,找到需要循环的阶段,依次放入循环体的内容,对变量的获取以及确定放入的位置,用%s 替换内容;

os常见函数

import os

—— os 是python提供固定的专门用来处理文件或者文件夹的模块

# 路径
'''
1)绝对路径:文件或者文件夹在计算机中的全路径(windows从盘开始写,而且程序
                    写绝对路径时,字符串前最好加 r )
2)相对路径:前提(需要操作的文件或者文件夹在工程里面的时后才可以使用相对路径)
a、用 .  开头表示当前目录(当前目录:当前代码文件的所在的文件夹)
注意:如果相对路径是以’./   '为开头,可以省略
b、用 .. 开头表示当前目录的上层目录
'''
  • 绝对路径
 path = r'D:\DAH\千峰学习\每日回顾\24.txt'
 print(path)
  • 相对路径

    创建文件夹

#os.mkdir(文件夹路径)   —— 创建文件夹时,如果文件已经存在,文件会报错。
os.mkdir('./names')
os.mkdir('./fie/abd')

​ 判断文件或者文件夹是否以及存在

# os.path.exists(文件或者文件夹路径)
result = os.path.exists('./names')
print(result)

# 在fie 创建 img 文件夹(判断fie文件中 img文件是否存在)
if os.path.exists('./fie/img'):
    os.mkdir('./img')

​ 罗列除指定文件夹中所有的内容

# os.listdir(文件夹路径)
res= os.listdir('./fie')
print(res)

​ 判断是否是文件或者文件夹

# 1)os.path.isfile(文件路径)               -    判断指定内容是否是文件
# 2)os.path.isdir(文件路径)               -   判断指定路径对应的内容是否是文件夹
result = os.path.isfile('./fie/abd')
for name in res:
    if os.path.isfile('./fie/%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、付费专栏及课程。

余额充值