博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单的邮件发送
阅读量:6333 次
发布时间:2019-06-22

本文共 5666 字,大约阅读时间需要 18 分钟。

对于代发邮件我们经常见于注册验证,服务通知等,在这里我们用Java和Python实现邮件发送。在Java中需要导入包.
以下是使用Java的方法:
首先创建setMessage类用来构造邮件发送的内容,包括主题、正文、附件。实现代码如下:
import javax.activation.DataHandler;  import javax.activation.FileDataSource;  import javax.mail.Message;  import javax.mail.Session;  import javax.mail.internet.InternetAddress;  import javax.mail.internet.MimeBodyPart;  import javax.mail.internet.MimeMessage;  import javax.mail.internet.MimeMultipart;  public class setMessage{  		private String from_mail;	private String to_mail;	private String subject;	private String text;	private String filePath;	setMessage(String fmail,String tomail,String subt,String txt,String fPath)	{		from_mail=fmail;		to_mail=tomail;		subject=subt;		text=txt;		filePath=fPath;	}	/**            * 根据文件绝对路径创建附件如"F:\\music\\kiss.mp3"          */    public MimeBodyPart createAttachment(String filePath) throws Exception {         	MimeBodyPart attachmentPart = new MimeBodyPart();          FileDataSource fds = new FileDataSource(filePath);          attachmentPart.setDataHandler(new DataHandler(fds));          attachmentPart.setFileName(fds.getName());                return attachmentPart;      }    /**        * 根据字符创建邮件正文部分      */     public MimeBodyPart createContent(String body) throws Exception{      	        MimeBodyPart contentBody = new MimeBodyPart();          /*用于组合文本和图片,"related"型的MimeMultipart对象*/          MimeMultipart contentMulti = new MimeMultipart("related");          MimeBodyPart textBody = new MimeBodyPart();                  textBody.setContent(body, "text/html;charset=gb2312");          contentMulti.addBodyPart(textBody);        contentBody.setContent(contentMulti);                  return contentBody;      }    /**        * 根据传入的 Seesion对象创建消息        */     public MimeMessage createMessage(Session session) throws Exception{                     MimeMessage msg = new MimeMessage(session);          msg.setFrom(new InternetAddress(from_mail));          msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to_mail));          msg.setSubject(subject);                  MimeBodyPart content = createContent(text);                 /*将邮件中各个部分组合成MimeMultipart 对象*/          MimeMultipart allPart = new MimeMultipart();        if(filePath!="")        {        	MimeBodyPart att = createAttachment(filePath);        	allPart.addBodyPart(att);        }        allPart.addBodyPart(content);        /* 将MimeMultipart 对象作为邮件内容并保存*/        msg.setContent(allPart);          msg.saveChanges();                  return msg;      }  }
然后创建MessageSender类设置邮件服务器,验证发件人信息。具体实现代码如下:
import java.util.Properties;   import javax.mail.Message;  import javax.mail.Session;  import javax.mail.Transport;  import javax.mail.internet.MimeMessage;   public class MessageSender {           String smtpServer="smtp.";     String user;       String pswd;     MessageSender(String user,String pswd){    	 this.user=user;    	 this.pswd=pswd;    	 setSmtp();     }     void setSmtp(){    	 String temp=user;    	 temp=temp.substring(temp.indexOf('@')+1, temp.length());    	 smtpServer+=temp;     }     public String getuser(){    	 return user;     }     /**         * 创建Session对象,配置传输的协议,设置需要身份认证         */     public Session createSession(String protocol) {     	        Properties property = new Properties();          property.setProperty("mail.transport.protocol", protocol);          property.setProperty("mail.smtp.auth", "true");          Session session = Session.getInstance(property);                    /*启动调试功能,可以从控制台中读取服务器的响应信息,这里我将其设为关闭 */         session.setDebug(false);                   return session;      }      /**        * 传入Session、MimeMessage对象,创建 Transport对象发送邮件        */     public void sendMail(Session session, MimeMessage msg) throws Exception {          /*由 Session对象获得Transport对象*/          Transport transport = session.getTransport();          /*发送用户名、密码连接到指定的 smtp服务器*/          transport.connect(smtpServer, user, pswd);          transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));          transport.close();      }          public static void main(String[] args) throws Exception {              	String from_ml,to_ml,subjet,txt,fpath;    	/*以发件人的账号和密码为参数创建sender对象*/    	MessageSender sender=new MessageSender("xxxxxxx@xx.com","*******");                /*使用SMTP协议来创建Session对象*/          Session session = sender.createSession("smtp");          /*收发地址、主题、正文、附件路径*/        from_ml=sender.getuser();        to_ml="xxxxxxxx@xx.com";        subjet="Test mail";        txt="This is a test mail";        fpath="";        MimeMessage mail = new setMessage(from_ml,to_ml,subjet,txt,fpath).createMessage(session);          sender.sendMail(session, mail);             }  }
Python方法:
import smtplibfrom email.mime.text import MIMETexttomail_list=["xxxxxx@xx.com"] #inbox listmail_host="smtp.xx.com" #set servermail_user="xxxxxxx@xx.com" #your accountmail_pass="*******" #your password mail_postfix="xx.com" #outbox suffixdef send_mail(to_list,sub,content):    me="Holif"+"<"+mail_user+"@"+mail_postfix+">"    msg = MIMEText(content,_subtype='plain',_charset='utf-8')      msg['Subject'] = sub      msg['From'] = me      msg['To'] = ";".join(to_list)    try:          server = smtplib.SMTP()          server.connect(mail_host)          server.login(mail_user,mail_pass)          server.sendmail(me, to_list, msg.as_string())          server.close()          return True      except Exception, e:          print str(e)          return Falseif __name__=='__main__':    if send_mail(tomail_list,"test mail","This is a test mail,Please don't reply!"):        print "success"    else:        print "failed"

转载于:https://www.cnblogs.com/baalhuo/p/5762130.html

你可能感兴趣的文章
分析:Android系统刷机后,第一次开机启动很慢的原因
查看>>
Vue2入门
查看>>
派生自QWidget的控件使用stylesheet
查看>>
关键字extern和static
查看>>
北广传媒RTMP流媒体服务器漏洞
查看>>
shell学习
查看>>
citrix xenserver 相关问题合集 (一) xenserver 6.2网卡丢失无法启动
查看>>
MySQL笔记
查看>>
vmware克隆Centos6.8虚拟机网卡无法启动问题
查看>>
人形机器人管家
查看>>
字符串转数字
查看>>
公共消息提示框的使用
查看>>
设置开机自启的脚本,用户管理
查看>>
决心书
查看>>
你真的懂JAVA吗
查看>>
课程第九天内容《基础交换九》 补充内容 操作
查看>>
怎样使用U盘安装Windows系统
查看>>
面向对象与原型(js)
查看>>
华为eNSP浮动路由实现不同vlan之间的通信
查看>>
HanLP Analysis for Elasticsearch
查看>>