发送邮件(java)

来源:互联网 发布:域名抢注服务 编辑:程序博客网 时间:2024/06/05 08:41

像发送邮件这种都是一个工具代码,所以备份一下,如有需要可以直接复制:

注意: 使用java 发邮件的时候要导入一个jar包即javax.mail.jar:javax.mail.jar 下载 

代码如下:

package com.fang.autosendmail;import java.util.Date;import java.util.Properties;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;public class AutoSendMail {private String host = "smtp.fang.com"; // smtp服务器private String user = "wanghaidong@ssa.com"; // 用户名private String pwd = "adcg321d"; // 密码private String from = "wanghaidong@ssa.com"; // 发件人地址,发件人地址和用户名都必须是正确的因为要验证private String to = "2275635@qq.com"; // 收件人地址,多个收件人要用半角符隔开private String cc = "591742@qq.com,zhangminghao@soufun.com"; // 抄送,如果是多个则使用半角符隔开private String bcc = "zhangminghao@soufun.com"; // 秘密抄送,如果是多个则使用半角符隔开private String subject = "发邮件测试"; // 邮件标题@SuppressWarnings("static-access")public void send(String txt) {Properties props = new Properties();// 设置发送邮件的邮件服务器的属性props.put("mail.smtp.host", host);// 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)props.put("mail.smtp.auth", "true");// 用刚刚设置好的props对象构建一个sessionSession session = Session.getDefaultInstance(props);// 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使// 用(你可以在控制台(console)上看到发送邮件的过程)session.setDebug(true);// 用session为参数定义消息对象MimeMessage message = new MimeMessage(session);try {// 加载发件人地址message.setFrom(new InternetAddress(from));// 加载收件人地址,只发送一个人message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));// 群发,获取地址,但各个地址之间使用半角符隔开// InternetAddress[] internetAddress = new// InternetAddress().parse(to);// message.addRecipients(Message.RecipientType.TO, internetAddress);// 个人 抄送/* * message.addRecipient(Message.RecipientType.CC, new * InternetAddress( cc)); */// 多人抄送InternetAddress[] ccinternetAddress = new InternetAddress().parse(cc);message.addRecipients(Message.RecipientType.CC, ccinternetAddress);// 秘密抄送,抄送,以及发送都是一个函数只是参数不同,单个和多个调用的方法不通注意(addRecipients,addRecipient)message.addRecipient(Message.RecipientType.BCC,new InternetAddress(bcc));// 设置发送日期message.setSentDate(new Date());// 加载标题message.setSubject(subject);// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件Multipart multipart = new MimeMultipart();// 设置邮件的文本内容BodyPart contentPart = new MimeBodyPart();contentPart.setText(txt);multipart.addBodyPart(contentPart);// 添加附件// BodyPart messageBodyPart = new MimeBodyPart();// DataSource source = new FileDataSource(affix);// 添加附件的内容// messageBodyPart.setDataHandler(new DataHandler(source));// 添加附件的标题// 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码// sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();// messageBodyPart.setFileName("=?GBK?B?"+// enc.encode(affixName.getBytes()) + "?=");// multipart.addBodyPart(messageBodyPart);// 将multipart对象放到message中message.setContent(multipart);// 保存邮件message.saveChanges();// 发送邮件Transport transport = session.getTransport("smtp");// 连接服务器的邮箱transport.connect(host, user, pwd);// 把邮件发送出去transport.sendMessage(message, message.getAllRecipients());// 释放资源transport.close();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {AutoSendMail aut = new AutoSendMail();// 正文String txt = "hello test mail more person  more cc bcc ! !!!";aut.send(txt);}}



0 0
原创粉丝点击