简单的邮件发送
来源:互联网 发布:linux如何安装tgz 编辑:程序博客网 时间:2024/05/17 08:24
对于代发邮件我们经常见于注册验证,服务通知等,在这里我们用Java和Python实现邮件发送。在Java中需要导入包mail.jar.
以下是使用Java的方法:
首先创建setMessage类用来构造邮件发送的内容,包括主题、正文、附件。实现代码如下:
首先创建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; } }
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"
0 0
- 简单邮件的邮件发送
- 简单的邮件发送
- 发送简单的邮件
- java 邮件发送 --- 简单的邮件发送
- 简单的发送邮件代码
- 简单的JavaMail邮件发送
- java 简单的发送邮件
- java简单的邮件发送
- delphi 简单的发送邮件
- javamail发送简单的邮件
- javamail简单的发送邮件
- 简单的邮件发送功能
- 简单的发送邮件代码
- 一个简单的邮件发送
- python-简单的邮件发送
- javamail简单的邮件发送
- Spring 简单的邮件发送
- Java的简单邮件发送
- Struts(22)标签库详解
- 百度牵手大悦城 相爱相杀的零售与互联网需要新玩法
- MongoDB跳出循环的两种方式
- 安全框架shiro
- 为什么匿名内部类参数必须为final类型
- 简单的邮件发送
- 在textView中输入时避免键盘的遮挡
- 使用continue语句
- WordPress相册插件NextGEN Gallery使用详解
- Neo4j学习
- Java finished with non-zero exit value 2 - Android Gradle
- 流量阶梯单价计费,并非想象中那样美好
- Mule-specific expression language-MEL学习
- 解决切换分支报“没有共同的祖先”的问题