(Android 功能代码) android 邮件发送

你猜 阅读:935 2021-04-01 10:16:54 评论:0

Javamail-Android配置步骤:

下载Android版本JavaMail包,additional.jar、mail.jar和activation.jar,下载地址JavaMail-Android

在项目与src同一目录级别下,新建文件夹lib,将下载的3个jar包放入该文件夹

右键->Properties->Java Build Path->Libraries,选择Add External JARs,找到项目下lib目录的3个jar包


项目截图:

package com.cogent.util; 
 
import java.util.Properties; 
 
/* 
 * 发送邮件需要使用的基本信息  
 */ 
public class MailSenderInfo { 
	// 发送邮件的服务器的IP和端口 
	private String mailServerHost; 
	private String mailServerPort = "25"; 
	// 邮件发送者的地址 
	private String fromAddress; 
	// 邮件接收者的地址 
	private String toAddress; 
	// 登陆服务器发送邮件的用户名和密码 
	private String userName; 
	private String password; 
	// 是否需要身份验证 
	private boolean validate = false; 
	// 邮件主题 
	private String subject; 
	// 邮件的文本内容 
	private String content; 
	// 邮件附件的文件名 
	private String[] attachFileNames; 
 
	/** 
	 * 获得邮件会话属性 
	 */ 
	public Properties getProperties() { 
		Properties p = new Properties(); 
		p.put("mail.smtp.host", this.mailServerHost); 
		p.put("mail.smtp.port", this.mailServerPort); 
		p.put("mail.smtp.auth", validate ? "true" : "false"); 
		return p; 
	} 
 
	public String getMailServerHost() { 
		return mailServerHost; 
	} 
 
	public void setMailServerHost(String mailServerHost) { 
		this.mailServerHost = mailServerHost; 
	} 
 
	public String getMailServerPort() { 
		return mailServerPort; 
	} 
 
	public void setMailServerPort(String mailServerPort) { 
		this.mailServerPort = mailServerPort; 
	} 
 
	public String getFromAddress() { 
		return fromAddress; 
	} 
 
	public void setFromAddress(String fromAddress) { 
		this.fromAddress = fromAddress; 
	} 
 
	public String getToAddress() { 
		return toAddress; 
	} 
 
	public void setToAddress(String toAddress) { 
		this.toAddress = toAddress; 
	} 
 
	public String getUserName() { 
		return userName; 
	} 
 
	public void setUserName(String userName) { 
		this.userName = userName; 
	} 
 
	public String getPassword() { 
		return password; 
	} 
 
	public void setPassword(String password) { 
		this.password = password; 
	} 
 
	public boolean isValidate() { 
		return validate; 
	} 
 
	public void setValidate(boolean validate) { 
		this.validate = validate; 
	} 
 
	public String getSubject() { 
		return subject; 
	} 
 
	public void setSubject(String subject) { 
		this.subject = subject; 
	} 
 
	public String getContent() { 
		return content; 
	} 
 
	public void setContent(String content) { 
		this.content = content; 
	} 
 
	public String[] getAttachFileNames() { 
		return attachFileNames; 
	} 
 
	public void setAttachFileNames(String[] attachFileNames) { 
		this.attachFileNames = attachFileNames; 
	} 
 
}


 

package com.cogent.util; 
 
import java.util.Date; 
import java.util.Properties; 
 
import javax.mail.Address; 
import javax.mail.BodyPart; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.Multipart; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeBodyPart; 
import javax.mail.internet.MimeMessage; 
import javax.mail.internet.MimeMultipart; 
/* 
 * 发送邮件给多个接收者、抄送邮件 
 */ 
public class MultiMailsender { 
	 /**  
     * 以文本格式发送邮件  
     * @param mailInfo 待发送的邮件的信息  
     */  
       public boolean sendTextMail(MultiMailSenderInfo mailInfo) {  
         // 判断是否需要身份认证  
         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创建一个邮件消息  
         Message mailMessage = new MimeMessage(sendMailSession);  
         // 创建邮件发送者地址  
         Address from = new InternetAddress(mailInfo.getFromAddress());  
         // 设置邮件消息的发送者  
         mailMessage.setFrom(from);  
         // 创建邮件的接收者地址,并设置到邮件消息中  
         Address[] tos = null;  
         String[] receivers = mailInfo.getReceivers(); 
         if (receivers != null){ 
             // 为每个邮件接收者创建一个地址 
             tos = new InternetAddress[receivers.length + 1]; 
             tos[0] = new InternetAddress(mailInfo.getToAddress()); 
             for (int i=0; i<receivers.length; i++){ 
                 tos[i+1] = new InternetAddress(receivers[i]); 
             } 
         } else { 
             tos = new InternetAddress[1]; 
             tos[0] = new InternetAddress(mailInfo.getToAddress()); 
         } 
 
         // Message.RecipientType.TO属性表示接收者的类型为TO  
         mailMessage.setRecipients(Message.RecipientType.TO,tos);  
         // 设置邮件消息的主题  
         mailMessage.setSubject(mailInfo.getSubject());  
         // 设置邮件消息发送的时间  
         mailMessage.setSentDate(new Date());  
         // 设置邮件消息的主要内容  
         String mailContent = mailInfo.getContent();  
         mailMessage.setText(mailContent);  
         // 发送邮件  
         Transport.send(mailMessage); 
         return true;  
         } catch (MessagingException ex) {  
             ex.printStackTrace();  
         }  
         return false;  
       }  
   /** 
    * 发送邮件给多个接收者,以Html内容 
    * @param mailInfo    带发送邮件的信息 
    * @return 
    */ 
   public static boolean sendMailtoMultiReceiver(MultiMailSenderInfo mailInfo){ 
       MyAuthenticator authenticator = null; 
       if (mailInfo.isValidate()) { 
           authenticator = new MyAuthenticator(mailInfo.getUserName(), 
                   mailInfo.getPassword()); 
       } 
       Session sendMailSession = Session.getInstance(mailInfo 
               .getProperties(), authenticator); 
       try { 
           Message mailMessage = new MimeMessage(sendMailSession); 
           // 创建邮件发送者地址 
           Address from = new InternetAddress(mailInfo.getFromAddress()); 
           mailMessage.setFrom(from); 
           // 创建邮件的接收者地址,并设置到邮件消息中 
           Address[] tos = null; 
           String[] receivers = mailInfo.getReceivers(); 
           if (receivers != null){ 
               // 为每个邮件接收者创建一个地址 
               tos = new InternetAddress[receivers.length + 1]; 
               tos[0] = new InternetAddress(mailInfo.getToAddress()); 
               for (int i=0; i<receivers.length; i++){ 
                   tos[i+1] = new InternetAddress(receivers[i]); 
               } 
           } else { 
               tos = new InternetAddress[1]; 
               tos[0] = new InternetAddress(mailInfo.getToAddress()); 
           } 
           // 将所有接收者地址都添加到邮件接收者属性中 
           mailMessage.setRecipients(Message.RecipientType.TO, tos); 
            
           mailMessage.setSubject(mailInfo.getSubject()); 
           mailMessage.setSentDate(new Date()); 
           // 设置邮件内容 
           Multipart mainPart = new MimeMultipart(); 
           BodyPart html = new MimeBodyPart(); 
           html.setContent(mailInfo.getContent(), "text/html; charset=GBK"); 
           mainPart.addBodyPart(html); 
           mailMessage.setContent(mainPart); 
           // 发送邮件 
           Transport.send(mailMessage); 
           return true; 
       } catch (MessagingException ex) { 
           ex.printStackTrace(); 
       } 
       return false; 
   } 
    
   /** 
    * 发送带抄送的邮件 
    * @param mailInfo    待发送邮件的消息 
    * @return 
    */ 
   public static boolean sendMailtoMultiCC(MultiMailSenderInfo mailInfo){ 
       MyAuthenticator authenticator = null; 
       if (mailInfo.isValidate()) { 
           authenticator = new MyAuthenticator(mailInfo.getUserName(), 
                   mailInfo.getPassword()); 
       } 
       Session sendMailSession = Session.getInstance(mailInfo 
               .getProperties(), authenticator); 
       try { 
           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); 
            
           // 获取抄送者信息 
           String[] ccs = mailInfo.getCcs(); 
           if (ccs != null){ 
               // 为每个邮件接收者创建一个地址 
               Address[] ccAdresses = new InternetAddress[ccs.length]; 
               for (int i=0; i<ccs.length; i++){ 
                   ccAdresses[i] = new InternetAddress(ccs[i]); 
               } 
               // 将抄送者信息设置到邮件信息中,注意类型为Message.RecipientType.CC 
               mailMessage.setRecipients(Message.RecipientType.CC, ccAdresses); 
           }  
            
           mailMessage.setSubject(mailInfo.getSubject()); 
           mailMessage.setSentDate(new Date()); 
           // 设置邮件内容 
           Multipart mainPart = new MimeMultipart(); 
           BodyPart html = new MimeBodyPart(); 
           html.setContent(mailInfo.getContent(), "text/html; charset=GBK"); 
           mainPart.addBodyPart(html); 
           mailMessage.setContent(mainPart); 
           // 发送邮件 
           Transport.send(mailMessage); 
           return true; 
       } catch (MessagingException ex) { 
           ex.printStackTrace(); 
       } 
       return false; 
   } 
    
   /** 
    * 发送多接收者类型邮件的基本信息 
    */ 
   public static class MultiMailSenderInfo extends MailSenderInfo{ 
       // 邮件的接收者,可以有多个 
       private String[] receivers; 
       // 邮件的抄送者,可以有多个 
       private String[] ccs; 
        
       public String[] getCcs() { 
           return ccs; 
       } 
       public void setCcs(String[] ccs) { 
           this.ccs = ccs; 
       } 
       public String[] getReceivers() { 
           return receivers; 
       } 
       public void setReceivers(String[] receivers) { 
           this.receivers = receivers; 
       } 
   } 
 
 
 
 
}

 

package com.cogent.util; 
 
import javax.mail.Authenticator; 
import javax.mail.PasswordAuthentication; 
 
public class MyAuthenticator extends Authenticator { 
	String userName=null; 
    String password=null; 
       
    public MyAuthenticator(){ 
    } 
    public MyAuthenticator(String username, String password) {  
        this.userName = username;  
        this.password = password;  
    }  
    protected PasswordAuthentication getPasswordAuthentication(){ 
        return new PasswordAuthentication(userName, password); 
    } 
 
 
}


功能代码:

package com.cogent.QQ; 
 
 
import com.cogent.util.MultiMailsender; 
import com.cogent.util.MultiMailsender.MultiMailSenderInfo; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.os.StrictMode; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 
 
public class EmailActivity extends Activity implements OnClickListener { 
	private EditText relation; 
	private EditText context; 
	private Button start; 
 
	@Override 
	public void onCreate(Bundle savedInstanceState) { 
		// TODO Auto-generated method stub 
		super.onCreate(savedInstanceState); 
		setContentView(R.layout.email); 
		 
		   StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()); 
	        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath().build()); 
		init(); 
		 
		  
		 
	} 
	public void init(){ 
		relation=(EditText) findViewById(R.id.relation); 
		context=(EditText) findViewById(R.id.context); 
		start=(Button) findViewById(R.id.start); 
		start.setOnClickListener(this); 
	} 
	@Override 
	public void onClick(View v) { 
		// TODO Auto-generated method stub 
		switch(v.getId()){ 
		case R.id.start: 
			//String send=relation.getEditableText().toString(); 
			//String title=context.getEditableText().toString(); 
			//这个类主要是设置邮件 
		      MultiMailSenderInfo mailInfo = new MultiMailSenderInfo();  
		      mailInfo.setMailServerHost("smtp.163.com");  
		      mailInfo.setMailServerPort("25");  
		      mailInfo.setValidate(true);  
		      mailInfo.setUserName("zhouzhiwengang@163.com");  
		      mailInfo.setPassword("769023183");//您的邮箱密码  
		      mailInfo.setFromAddress("zhouzhiwengang@163.com");  
		      mailInfo.setToAddress("1226585398@qq.com");  
		      mailInfo.setSubject("设置邮箱标题");  
		      mailInfo.setContent("设置邮箱内容"); 
		      String[] receivers = new String[]{"1226585398@qq.com"};  
		      String[] ccs = receivers; mailInfo.setReceivers(receivers);  
		      mailInfo.setCcs(ccs);  
		      //这个类主要来发送邮件  
		      MultiMailsender sms = new MultiMailsender();  
		      sms.sendTextMail(mailInfo);//发送文体格式  
 
			break; 
		default: 
		break; 
		 
		 
		} 
		 
	} 
	 
 
}



 

标签:Android
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号