福利!!在附件中贈送相關jar!!
1.導入相關jar:
調用郵件操作相關的jar如下(可在code.google.com上下載):
activation.jar
additionnal.jar
mail.jar
在需要導入的Android工程中屬性頁設置:
選擇Add External Jar,並將三個jar包導入;
現在即可在代碼調用相關API:
2.在項目中新建一個郵件發送的MailSender類:
import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.Authenticator; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.Message; public class MailSender extends Authenticator { private Properties properties; private Session session; private MimeMultipart multipart; private Message message; public MailSender() { super(); this.properties = new Properties(); } public void setProperties(String host, String post) { this.properties.put("mail.smtp.host", host); this.properties.put("mail.smtp.post", post); this.properties.put("mail.smtp.auth", true); this.session = Session.getInstance(properties); this.message = new MimeMessage(session); this.multipart = new MimeMultipart("mixed"); } public void setReceiver(String[] receiver) throws MessagingException { Address[] address = new InternetAddress[receiver.length]; for (int i = 0; i < receiver.length; i++) { address[i] = new InternetAddress(receiver[i]); } this.message.setRecipients(Message.RecipientType.TO, address); } public void setMessage(String from, String title, String content) throws AddressException, MessagingException { this.message.setFrom(new InternetAddress(from)); this.message.setSubject(title); MimeBodyPart textBody = new MimeBodyPart(); textBody.setContent(content, "text/html;charset=gbk"); this.multipart.addBodyPart(textBody); } public void addAttachment(String filePath) throws MessagingException { FileDataSource fileDataSource = new FileDataSource(new File(filePath)); DataHandler dataHandler = new DataHandler(fileDataSource); MimeBodyPart mimeBodyPart = new MimeBodyPart(); mimeBodyPart.setDataHandler(dataHandler); mimeBodyPart.setFileName(fileDataSource.getName()); this.multipart.addBodyPart(mimeBodyPart); } public void sendEmail(String host, String account, String pwd) throws MessagingException { this.message.setSentDate(new Date()); this.message.setContent(this.multipart); this.message.saveChanges(); Transport transport = session.getTransport("smtp"); transport.connect(host, account, pwd); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } }
注意區別兩個同名的類:javax.mail.Message和android.os.Message;
3.在主類中新建子線程調用MailSender類:
3.1 Activity主類中變量聲明、參數設置:
private MailSender mailsender; private String str_SMTP = "smtp.126.com"; private String str_SMTP_PORT = "587"; private String str_USER_NAME = "[email protected]"; private String str_PASSWORD = "******"; private String str_MAILTITLE = "System.Log"; private String str_TARGETMAIL = "[email protected]"; private String str_SMTP = "smtp.126.com"; private String str_SMTP_PORT = "587"; mailsender = new MailSender(); mailsender.setProperties(str_SMTP, str_SMTP_PORT);
本例使用一個126的郵箱發到一個yahoo郵箱中;
3.2 寫了個方法:
public void SendingTargetMail(String str_content) throws AddressException,MessagingException { mailsender.setMessage(str_USER_NAME, str_MAILTITLE, str_content); mailsender.setReceiver(new String[] { str_TARGETMAIL }); mailsender.sendEmail(str_SMTP, str_USER_NAME, str_PASSWORD);
3.3 寫個子線程調用(郵件正文遵循html語法):
Runnable Sward_runnable = new Runnable() { public void run() { SendingTargetMail("<html><body>" + "System time :"+ getCurrentTime() + "<br>" + "</body><html>"); } };
3.4 主線程啓動子線程,後者一啓動就發了個郵件:
Sward_Thread = new Thread(Sward_runnable); Sward_Thread.start();
3.5 Manifest文件中別忘了加上權限聲明:
<uses-permission android:name="android.permission.INTERNET" />