You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
6.2 KiB
Java
148 lines
6.2 KiB
Java
package com.idormy.sms.forwarder.utils;
|
|
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.util.Log;
|
|
|
|
import java.util.Date;
|
|
import java.util.Properties;
|
|
|
|
import javax.mail.Address;
|
|
import javax.mail.Message;
|
|
import javax.mail.MessagingException;
|
|
import javax.mail.Session;
|
|
import javax.mail.Transport;
|
|
import javax.mail.internet.InternetAddress;
|
|
import javax.mail.internet.MimeMessage;
|
|
|
|
import static com.idormy.sms.forwarder.SenderActivity.NOTIFY;
|
|
|
|
|
|
public class SenderMailMsg {
|
|
private static String TAG = "SenderMailMsg";
|
|
//qq
|
|
// private static final String HOST = "smtp.qq.com";
|
|
// private static final String PORT = "587";
|
|
// private static final String FROM_ADD = "teprinciple@foxmail.com"; //发送方邮箱
|
|
// private static final String FROM_PSW = "lfrlpganzjrwbeci";//发送方邮箱授权码
|
|
|
|
// //163
|
|
// private static final String HOST = "smtp.163.com";
|
|
// private static final String PORT = "465"; //nossl 25或者ssl465 994
|
|
// private static final String FROM_ADD = "xxxxxx@163.com";
|
|
// private static final String FROM_PSW = "xx";
|
|
|
|
public static void sendEmail(final Handler handError, final String host, final String port, final boolean ssl, final String fromemail, final String pwd, final String toAdd, final String title, final String content) {
|
|
|
|
Log.d(TAG, "sendEmail: host:" + host + " port:" + port + " ssl:" + ssl + " fromemail:" + fromemail + " pwd:" + pwd + " toAdd:" + toAdd);
|
|
new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
|
|
try {
|
|
final MailSenderInfo mailInfo = new MailSenderInfo();
|
|
mailInfo.setMailServerHost(host);
|
|
mailInfo.setMailServerPort(port);
|
|
mailInfo.setValidate(true);
|
|
mailInfo.setUserName(fromemail); //你的邮箱地址
|
|
mailInfo.setPassword(pwd);//您的邮箱密码
|
|
mailInfo.setFromAddress(fromemail);//和上面username的邮箱地址一致
|
|
mailInfo.setToAddress(toAdd);
|
|
mailInfo.setSubject(title);
|
|
mailInfo.setContent(content);
|
|
mailInfo.setSsl(ssl);
|
|
|
|
//这个类主要来发送邮件
|
|
// 判断是否需要身份认证
|
|
MyAuthenticator authenticator = null;
|
|
Properties pro = mailInfo.getProperties();
|
|
if (mailInfo.isValidate()) {
|
|
// 如果需要身份认证,则创建一个密码验证器
|
|
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
|
|
}
|
|
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
|
|
Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
|
|
try {
|
|
// 根据session创建一个邮件消息
|
|
final Message mailMessage = new MimeMessage(sendMailSession);
|
|
// 创建邮件发送者地址
|
|
Address from = new InternetAddress(mailInfo.getFromAddress());
|
|
// 设置邮件消息的发送者
|
|
mailMessage.setFrom(from);
|
|
// 创建邮件的接收者地址,并设置到邮件消息中
|
|
Address to = new InternetAddress(mailInfo.getToAddress());
|
|
mailMessage.setRecipient(Message.RecipientType.TO, to);
|
|
// 设置邮件消息的主题
|
|
mailMessage.setSubject(mailInfo.getSubject());
|
|
// 设置邮件消息发送的时间
|
|
mailMessage.setSentDate(new Date());
|
|
// 设置邮件消息的主要内容
|
|
String mailContent = mailInfo.getContent();
|
|
mailMessage.setText(mailContent);
|
|
// 发送邮件
|
|
Transport.send(mailMessage);
|
|
|
|
} catch (MessagingException ex) {
|
|
ex.printStackTrace();
|
|
Log.e(TAG, "error" + ex.getMessage());
|
|
if (handError != null) {
|
|
android.os.Message msg = new android.os.Message();
|
|
msg.what = NOTIFY;
|
|
Bundle bundle = new Bundle();
|
|
bundle.putString("DATA", ex.getMessage());
|
|
msg.setData(bundle);
|
|
handError.sendMessage(msg);
|
|
}
|
|
|
|
}
|
|
if (handError != null) {
|
|
android.os.Message msg = new android.os.Message();
|
|
msg.what = NOTIFY;
|
|
Bundle bundle = new Bundle();
|
|
bundle.putString("DATA", "发送成功");
|
|
msg.setData(bundle);
|
|
handError.sendMessage(msg);
|
|
}
|
|
|
|
Log.e(TAG, "sendEmail success");//sms.sendHtmlMail(mailInfo);//发送html格式
|
|
|
|
} catch (Exception e) {
|
|
Log.e(TAG, e.getMessage(), e);
|
|
if (handError != null) {
|
|
android.os.Message msg = new android.os.Message();
|
|
msg.what = NOTIFY;
|
|
Bundle bundle = new Bundle();
|
|
bundle.putString("DATA", e.getMessage());
|
|
msg.setData(bundle);
|
|
handError.sendMessage(msg);
|
|
}
|
|
|
|
}
|
|
}
|
|
}).start();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* public void sendFileMail(View view) {
|
|
* <p>
|
|
* File file = new File(Environment.getExternalStorageDirectory()+File.separator+"test.txt");
|
|
* OutputStream os = null;
|
|
* try {
|
|
* os = new FileOutputStream(file);
|
|
* String str = "hello world";
|
|
* byte[] data = str.getBytes();
|
|
* os.write(data);
|
|
* } catch (FileNotFoundException e) {
|
|
* e.printStackTrace();
|
|
* } catch (IOException e) {
|
|
* e.printStackTrace();
|
|
* }finally{
|
|
* try {
|
|
* if (os != null)os.close();
|
|
* } catch (IOException e) {
|
|
* }
|
|
* }
|
|
* SenderMailMsg.send(file,editText.getText().toString());
|
|
* }
|
|
*/ |