java之邮件发送
来源:互联网 发布:想做的事情太多 知乎 编辑:程序博客网 时间:2024/06/05 22:32
java实现邮件发送的方法很多,这里提供一种:
1.mail实体类
public class Mail {public String host = "";public String from="";public String password = "";public List<String> to=new ArrayList<String>();//目标邮件地址public List<File> att=new ArrayList<File>();//附件public String context;public String title;public String fromname;public Boolean hassend; /** * * @param host 邮件键服务器 * @param from 发送邮件地址 * @param pwd 密码 * @param title 标题 * @param context 内容,html格式 */@SuppressWarnings("static-access")public Mail(String host,String from,String pwd,String title,String context){this.host=host;this.from=from;this.password=pwd;this.context=context;this.fromname=context;this.title=title;this.hassend = false;}/** * 添加目标地址 * @param s */public void addTarget(String s)throws NullPointerException,ParseException{this.to.add(s);}/** * 添加附件 * @param s */ public boolean addAttach(String s){File f=new File(s);return this.addAttach(f);}/** * 添加附件 * @param f * @throws FileNotFoundException */ public boolean addAttach(File f){if(f.exists()&&f.isFile()){this.att.add(f);return true;}else{return false;}}/** * 邮件内容 * @param context */public void setContext(String context) {this.context = context;}/** * 邮件标题 * @param title */public void setTitle(String title) {this.title = title;}2.具体实现方法
public void sendmail(Mail mail){if(mail.hassend) return;Integer status = 1;try{Properties props = new Properties();props.put("mail.smtp.host", mail.host);props.put("mail.smtp.auth", "true");Session mailSession = Session.getDefaultInstance(props);Message newMessage = new MimeMessage(mailSession);newMessage.setFrom(new InternetAddress(mail.from));for(String toa:mail.to){ newMessage.addRecipient(Message.RecipientType.TO,new InternetAddress(toa));}MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822"); CommandMap.setDefaultCommandMap(mc); Multipart multipart = new MimeMultipart();BodyPart html=new MimeBodyPart(); html.setContent(mail.context, "text/html;charset=gbk"); multipart.addBodyPart(html); for(File s:mail.att){MimeBodyPart messageBodyPart = new MimeBodyPart();DataSource source = new FileDataSource(s);messageBodyPart.setDataHandler(new DataHandler(source));String FileName = MimeUtility.encodeText(s.getName()); messageBodyPart.setFileName(FileName);multipart.addBodyPart(messageBodyPart); }newMessage.setContent(multipart);newMessage.setSubject(mail.title);newMessage.setSentDate(new java.util.Date());//newMessage.setText(this.context);SMTPTransport t = (SMTPTransport) mailSession.getTransport("smtp");try{t.connect(mail.host, mail.from, mail.password);t.sendMessage(newMessage, newMessage.getAllRecipients());}catch(Exception e){ e.printStackTrace();status = 2;}finally{t.close();for(File f : mail.att)f.deleteOnExit();} } catch (MessagingException e) { e.printStackTrace(); status = 2; } catch (UnsupportedEncodingException e) { e.printStackTrace(); status = 2; } finally{ mail.hassend = true; String maillist = ""; for(String m : mail.to)maillist += m + ";";}}
0 0
- Java之发送邮件
- java之邮件发送
- java之邮件发送-实例
- javaEE之----------java代码发送邮件
- javaEE之----------java代码发送邮件
- Java基础学习之发送邮件
- Java-工具类之发送邮件
- Java之工具类发送邮件
- 登录之找回密码-java发送邮件
- Java网络编程之JavaMail发送邮件和接受邮件
- Java网络编程之JavaMail发送邮件和接受邮件
- Java网络编程之JavaMail发送邮件和接受邮件
- Java网络编程之JavaMail发送邮件和接受邮件
- Java网络编程之JavaMail发送邮件和接受邮件
- [java]Java发送邮件
- java 邮件发送 --- 简单的邮件发送
- JAVA发送邮件及springboot发送邮件
- Android 之 发送邮件
- Android 扩展OkHttp支持请求优先级调度
- Ubuntu Server MySQL 允许 root 用户远程访问
- document.all[]的用法
- Process的使用
- Android使用HttpClient实现文件上传到PHP服务器,并监控进度条
- java之邮件发送
- Servlet处理客户端HTTP请求
- 区分大小写是自律的一种方式
- JS高级应用:操作模态与非模态对话框
- 计算Java List中的重复项出现次数
- iOS开发-Objective-C与JavaScript交互
- 各种OutOfMemoryError的解决(待补充)
- JS实现联想输入(二)
- “DllRegisterServer的调用失败”问题解决办法