Android利用Java Mail实现自动发送邮件
来源:互联网 发布:天涯明月刀男捏脸数据 编辑:程序博客网 时间:2024/06/07 00:34
为了净化网络大环境,请不要利用这个方法发送垃圾邮件,敬请合理合法使用!
我们在用邮箱注册一个软件的时候,通常它都会给我的邮箱发送个激活确认的邮件。这个一般情况下都是服务器端来进行处理的,但是突然间想知道Android客户端应该会有方法同样实现这个功能——利用某个特定邮箱账号向用户自动发送邮件!Android系统有自带的Email进行发送邮件,但这种会展示给用户,我们这里讲的是默认不显示给用户,也就是"偷偷"的发送!
我们需要用到三个jar包 android_mail.jar 。
首先,我们先定义一个邮件的bean类
public class MailBean implements Serializable { //发送人 private String sender; // 收件人 private List<String> recipientsTO; // 抄送人 private List<String> recipientsCC; // 密送人 private List<String> recipientsBCC; //主题 private String subject; // 正文 private String body; // 附件列表 private List<String> attachments; public String getSender() { return sender; } public void setSender(String sender) { this.sender = sender; } public List<String> getRecipientsTO() { return recipientsTO; } public void setRecipientsTO(List<String> recipientsTO) { this.recipientsTO = recipientsTO; } public List<String> getRecipientsCC() { return recipientsCC; } public void setRecipientsCC(List<String> recipientsCC) { this.recipientsCC = recipientsCC; } public List<String> getRecipientsBCC() { return recipientsBCC; } public void setRecipientsBCC(List<String> recipientsBCC) { this.recipientsBCC = recipientsBCC; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } public List<String> getAttachments() { return attachments; } public void setAttachments(List<String> attachments) { this.attachments = attachments; } @Override public String toString() { return "MailBean{" + "sender='" + sender + '\'' + ", recipientsTO=" + recipientsTO + ", recipientsCC=" + recipientsCC + ", recipientsBCC=" + recipientsBCC + ", subject='" + subject + '\'' + ", body='" + body + '\'' + ", attachments=" + attachments + '}'; }}
接下来就是最重要的发送邮件的工具类:
配置发送邮件账户的属性:我这里用的是126邮箱,使用gmail等其他邮箱smtp的配置都失效了,暂时还未找到解决的方法,如谁有解决方法,还请评论告知!
private final static Session session; private final static String user = "*****@126.com";//你的邮箱账号 private final static String password = "******";//你的邮箱密码 static { Properties properties = new Properties(); properties.put("mail.smtp.host", "smtp.126.com");//邮箱的host地址,基本都是smtp.****.com properties.put("mail.smtp.port", "25");//邮箱smtp端口号 properties.put("mail.smtp.auth", "true");//开启smtp验证 properties.put("mail.debug", "false"); session = Session.getInstance(properties, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user, password); } }); }
接下载是地址字符串构造成网络地址对象的方法,这里考虑到可能会发给多个账号等。
private static InternetAddress[] listToAddresses(List<String> list) { if (list != null && !list.isEmpty()) { int size = list.size(); InternetAddress[] addresses = new InternetAddress[size]; try { for (int i = 0; i < size; i++) { addresses[i] = new InternetAddress(list.get(i)); } return addresses; } catch (AddressException ex) { ex.printStackTrace(); } } return null; }
执行发送邮件的方法:
public static void sendMail(MailBean mail) { try { MimeMessage msg = new MimeMessage(session); //设置邮件发件人 msg.setFrom(new InternetAddress(user)); //设置邮件收件人 msg.setRecipients(Message.RecipientType.TO, listToAddresses(mail.getRecipientsTO())); //设置邮件抄送人 msg.setRecipients(Message.RecipientType.CC, listToAddresses(mail.getRecipientsCC())); //设置邮件密送人 msg.setRecipients(Message.RecipientType.BCC, listToAddresses(mail.getRecipientsBCC())); //设置邮件主题 msg.setSubject(mail.getSubject(), "utf-8"); //设置邮件正文 Multipart mp = new MimeMultipart(); MimeBodyPart mbp = new MimeBodyPart(); mbp.setContent(mail.getBody(), "text/html; charset=utf-8"); mp.addBodyPart(mbp); //设置邮件附件 List<String> attachments = mail.getAttachments(); if (attachments != null && !attachments.isEmpty()) { for (String attachment : attachments) { MimeBodyPart attach = new MimeBodyPart(); attach.attachFile(attachment); mp.addBodyPart(attach); } } msg.setContent(mp); //设置发送时间 msg.setSentDate(new Date()); //发送 Transport.send(msg); } catch (MessagingException | IOException ex) { ex.printStackTrace(); } }
完整的代码:
public class MailUtil { private final static Session session; private final static String user = "*****@126.com";//你的邮箱账号 private final static String password = "******";//你的邮箱密码 static { Properties properties = new Properties(); properties.put("mail.smtp.host", "smtp.126.com");//邮箱的host地址,基本都是smtp.****.com properties.put("mail.smtp.port", "25");//邮箱smtp端口号 properties.put("mail.smtp.auth", "true");//开启smtp验证 properties.put("mail.debug", "false"); session = Session.getInstance(properties, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user, password); } }); } public static void sendMail(MailBean mail) { try { MimeMessage msg = new MimeMessage(session); //设置邮件发件人 msg.setFrom(new InternetAddress(user)); //设置邮件收件人 msg.setRecipients(Message.RecipientType.TO, listToAddresses(mail.getRecipientsTO())); //设置邮件抄送人 msg.setRecipients(Message.RecipientType.CC, listToAddresses(mail.getRecipientsCC())); //设置邮件密送人 msg.setRecipients(Message.RecipientType.BCC, listToAddresses(mail.getRecipientsBCC())); //设置邮件主题 msg.setSubject(mail.getSubject(), "utf-8"); //设置邮件正文 Multipart mp = new MimeMultipart(); MimeBodyPart mbp = new MimeBodyPart(); mbp.setContent(mail.getBody(), "text/html; charset=utf-8"); mp.addBodyPart(mbp); //设置邮件附件 List<String> attachments = mail.getAttachments(); if (attachments != null && !attachments.isEmpty()) { for (String attachment : attachments) { MimeBodyPart attach = new MimeBodyPart(); attach.attachFile(attachment); mp.addBodyPart(attach); } } msg.setContent(mp); //设置发送时间 msg.setSentDate(new Date()); //发送 Transport.send(msg); } catch (MessagingException | IOException ex) { ex.printStackTrace(); } } /** * 把list里的地址字符串构造成网络地址对象的数组 */ private static InternetAddress[] listToAddresses(List<String> list) { if (list == null || list.isEmpty()) return null; int size = list.size(); InternetAddress[] addresses = new InternetAddress[size]; try { for (int i = 0; i < size; i++) { addresses[i] = new InternetAddress(list.get(i)); } return addresses; } catch (AddressException ex) { ex.printStackTrace(); } return null; }}
1 0
- Android利用Java Mail实现自动发送邮件
- 利用java mail发送邮件
- 实现java mail发送邮件
- php实现自动发送邮件pear Mail
- 利用java mail发送邮件(转)
- java 利用mail.jar发送邮件
- 利用java mail发送QQ邮件
- 利用 java.mail 发送邮件简单demo
- Java mail 实现邮件的发送
- java mail 实现邮件发送功能
- java mail实现简单的邮件发送
- Android使用Java Mail发送邮件
- Android 使用Java Mail发送邮件
- Android 发送邮件mail
- Java Mail 发送邮件
- JAVA MAIL发送邮件
- Java Mail 发送邮件
- Java mail发送邮件
- FLANN进行特征点匹配
- 一些正则表达式
- fastboot:remote: Image is too large for the partition
- C#——特性
- 第13周项目3-Dijkstra算法的验证
- Android利用Java Mail实现自动发送邮件
- OC load 和 initialize 方法
- Android Log日志最佳实践
- 第十二周项目3—图遍历算法实现
- 为什么用tortoisegit 打开log的时候会显示未修改的文件
- JDBC简单入门_JDBC小例子
- 金字塔数
- 重要开源协议的比较(BSD,Apache,GPL,LGPL,MIT) – 整理
- 第14周项目2-二叉树排序树中查找的路径