android 发送163邮件,app里使用163邮箱发送邮件,被163认为是垃圾邮件的坑爹经历!_ !...

packagecom.smartdoorbell.util;importandroid.os.AsyncTask;importjava.util.Date;importjava.util.List;importjava.util.Properties;importjavax.activation.CommandMap;importjavax.activation.MailcapCommandMap;importjavax.mail.Authenticator;importjavax.mail.Message;importjavax.mail.Multipart;importjavax.mail.PasswordAuthentication;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeBodyPart;importjavax.mail.internet.MimeMessage;importjavax.mail.internet.MimeMultipart;/*** Created by zhangjie on 15/8/31.*/

public classJEmailHelper {private int port = 25; //smtp协议使用的端口

private String host = "smtp.163.com"; //发件人邮件服务器

private String user = "[email protected]"; //使用者账号

private String password = "xxxxxxx"; //使用者密码

private ListemailTos;private ListemailCCs;privateString subject;privateString body;private Listpaths;enumSendStatus {

SENDING, UNDO, SENDOK, SENDFAIL

};privateSendStatus sendStatus;public interfaceJieEmailInfterface {voidstartSend();voidSendStatus(SendStatus sendStatus);

}privateJieEmailInfterface jieEmailInfterface;public voidsetJieEmailInfterface(JieEmailInfterface jieEmailInfterface) {this.jieEmailInfterface =jieEmailInfterface;

}publicJEmailHelper() {synchronized (JEmailHelper.class) {

sendStatus=SendStatus.UNDO;

}

}//构造发送邮件帐户的服务器,端口,帐户,密码

public JEmailHelper(String host, intport, String user, String password) {synchronized (JEmailHelper.class) {this.port =port;this.user =user;this.password =password;this.host =host;

sendStatus=SendStatus.UNDO;

}

}/***@paramemailTos

* 主要接收人的电子邮箱列表

*@paramemailCCs

* 抄送人的电子邮箱列表

*@paramsubject

* 邮件标题

*@parambody

* 正文内容

*@parampaths

* 发送的附件路径集合*/

public void setParams(List emailTos, ListemailCCs,

String subject, String body, Listpaths) {this.emailTos =emailTos;this.emailCCs =emailCCs;this.subject =subject;this.body =body;this.paths =paths;

}public voidsendEmail() {newJieAsynTask().execute();

}private void sendEmailBg() throwsException {

Properties properties= newProperties();

properties.put("mail.smtp.host", host);

properties.put("mail.smtp.port", port);

properties.put("mail.smtp.auth", "true");//true一定要加引号

properties.put("mail.transport.protocol", "smtp");

JieAuthenticator jieAuth= newJieAuthenticator(user, password);

Session session=Session.getInstance(properties, jieAuth);//创建一个消息

MimeMessage msg = newMimeMessage(session);//设置发送人

msg.setFrom(newInternetAddress(user));//设置主要接收人

if (emailTos != null && !emailTos.isEmpty()) {int size =emailTos.size();

InternetAddress[] addresses= newInternetAddress[size];for (int i = 0; i < size; i++) {

addresses[i]= newInternetAddress(emailTos.get(i));

}

msg.setRecipients(Message.RecipientType.TO, addresses);

}//设置抄送人的电子邮件

if (emailCCs != null && !emailCCs.isEmpty()) {int size =emailCCs.size();

InternetAddress[] addresses= newInternetAddress[size];for (int i = 0; i < size; i++) {

addresses[i]= newInternetAddress(emailCCs.get(i));

}

msg.setRecipients(Message.RecipientType.CC, addresses);

}

msg.setSubject(subject);//创建一个消息体

MimeBodyPart msgBodyPart = newMimeBodyPart();

msgBodyPart.setText(body);//创建Multipart增加其他的parts

Multipart mp = newMimeMultipart();

mp.addBodyPart(msgBodyPart);//创建文件附件

if (paths!=null){for(String path : paths) {if (path!=null){

MimeBodyPart fileBodyPart= newMimeBodyPart();

fileBodyPart.attachFile(path);

mp.addBodyPart(fileBodyPart);

}

}

}//增加Multipart到消息体中

msg.setContent(mp);//设置日期

msg.setSentDate(newDate());//设置附件格式

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);

msg.saveChanges();//发送消息

Transport.send(msg);

}class JieAuthenticator extendsAuthenticator {privateString strUser;privateString strPwd;publicJieAuthenticator(String user, String password) {this.strUser =user;this.strPwd =password;

}protectedPasswordAuthentication getPasswordAuthentication() {return newPasswordAuthentication(strUser, strPwd);

}

}class JieAsynTask extends AsyncTask{

@Overrideprotected voidonPreExecute() {super.onPreExecute();if (jieEmailInfterface != null) {

jieEmailInfterface.startSend();

}

}

@Overrideprotected voidonPostExecute(SendStatus result) {super.onPostExecute(result);if (jieEmailInfterface != null) {

jieEmailInfterface.SendStatus(result);

}

sendStatus=SendStatus.UNDO;

}

@OverrideprotectedSendStatus doInBackground(Void... params) {try{

sendStatus=SendStatus.SENDING;

sendEmailBg();

sendStatus=SendStatus.SENDOK;

}catch(Exception e) {

e.printStackTrace();

sendStatus=SendStatus.SENDFAIL;

}returnsendStatus;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值