整理下发邮件

以前测试还好的,现在不知道咋了,竟然发送失败,提示错误。。不管了,先放这里方便以后查找

177: W/System.err(9925): javax.mail.MessagingException: 500 Error: bad syntax

几个基本类:

MailSenderInfo.java

/**   
* 发送邮件需要使用的基本信息   
*/    
import java.util.ArrayList;
import java.util.Properties;    
import android.text.TextUtils;
public class MailSenderInfo {    
    // 发送邮件的服务器的IP和端口    
    private String mailServerHost;    
    private String mailServerPort = "25";    
   
	// 邮件发送者的地址    
    private String fromAddress;    
	// 登陆邮件发送服务器的用户名和密码    
    private String userName;    
    private String password;    
    // 是否需要身份验证    
    private boolean validate = false;    
    // 邮件主题    
    private String subject;    
    // 邮件的文本内容    
    private String content;    
    //邮件接受者地址集合
    private ArrayList<String> toAddressList=new ArrayList<String>();
    // 邮件附件的文件名    
    private ArrayList<String> attachFileNames=new ArrayList<String>();   
    
    public MailSenderInfo(){
    	
    }
    public MailSenderInfo(String mailServerHost, String mailServerPort,
			String fromAddress, String userName, String password,
			boolean validate, String subject, String content,
			ArrayList<String> toAddressList, ArrayList<String> attachFileNames) {
		super();
		this.mailServerHost = mailServerHost;
		this.mailServerPort = mailServerPort;
		this.fromAddress = fromAddress;
		this.userName = userName;
		this.password = password;
		this.validate = validate;
		this.subject = subject;
		this.content = content;
		if(toAddressList!=null)
		this.toAddressList = toAddressList;
		if(attachFileNames!=null)
		this.attachFileNames = attachFileNames;
	}
    public MailSenderInfo(String mailServerHost, String mailServerPort,
    		String fromAddress, String userName, String password,
    		boolean validate, String subject, String content,
    		String toAddress, String attachFileName) {
    	super();
    	this.mailServerHost = mailServerHost;
    	this.mailServerPort = mailServerPort;
    	this.fromAddress = fromAddress;
    	this.userName = userName;
    	this.password = password;
    	this.validate = validate;
    	this.subject = subject;
    	this.content = content;
    	if(!TextUtils.isEmpty(toAddress))
    	this.toAddressList.add(toAddress);
    	if(!TextUtils.isEmpty(attachFileName))
    	this.attachFileNames.add(attachFileName);
    }
	/**   
      * 获得邮件会话属性   
      */    
    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 boolean isValidate() {    
      return validate;    
    }   
    public void setValidate(boolean validate) {    
      this.validate = validate;    
    }   
 
    public String getFromAddress() {    
      return fromAddress;    
    }    
    public void setFromAddress(String fromAddress) {    
      this.fromAddress = fromAddress;    
    }   
    public String getPassword() {    
      return password;    
    }   
    public void setPassword(String password) {    
      this.password = password;    
    }   
  
    public String getUserName() {    
      return userName;    
    }   
    public void setUserName(String userName) {    
      this.userName = userName;    
    }   
    public String getSubject() {    
      return subject;    
    }   
    public void setSubject(String subject) {    
      this.subject = subject;    
    }   
    public String getContent() {    
      return content;    
    }   
    public void setContent(String textContent) {    
      this.content = textContent;    
    }    
    public ArrayList<String> getAttachFileNames() {
 		return attachFileNames;
 	}
 	public void setAttachFileNames(ArrayList<String> attachFileNames) {
 		this.attachFileNames = attachFileNames;
 	}
 	/**可以单独添加附件路径*/
 	public void addAttachFileName(String filepath){
 		attachFileNames.add(filepath);
 	}
 	
    public ArrayList<String> getToAddressList() {
		return toAddressList;
	}
    /**直接添加一个邮件接收者的集合*/
	public void setToAddressList(ArrayList<String> toAddressList) {
		this.toAddressList = toAddressList;
	}
	/**单独的一个一个添加接收者**/
	public void addToAddress(String toAddress){
		toAddressList.add(toAddress);
	}
}   
第二个

import javax.mail.*;   

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

第三个:


import java.util.Date;    
import java.util.Properties;   
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
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 SimpleMailSender  {    
/**   
  * 以文本格式发送邮件   
  * @param mailInfo 待发送的邮件的信息   
  */    
    public boolean sendTextMail(MailSenderInfo 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);    
      //sendMailSession.setDebug(true);
      try {    
      // 根据session创建一个邮件消息    
      Message mailMessage = new MimeMessage(sendMailSession);    
      // 创建邮件发送者地址    
      Address from = new InternetAddress(mailInfo.getFromAddress());    
      // 设置邮件消息的发送者    
      mailMessage.setFrom(from);    
      // 创建邮件的接收者地址,并设置到邮件消息中    
      int address_size=mailInfo.getToAddressList().size();
		Address[] tos=new Address[address_size];
		for(int i=0;i<address_size;i++){
			tos[i]=new InternetAddress(mailInfo.getToAddressList().get(i));
		}
		// 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 待发送的邮件信息   
      */    
    public static boolean sendHtmlMail(MailSenderInfo 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);    
      // 创建邮件的接收者地址,并设置到邮件消息中    
      int address_size=mailInfo.getToAddressList().size();
		Address[] tos=new Address[address_size];
		for(int i=0;i<address_size;i++){
			tos[i]=new InternetAddress(mailInfo.getToAddressList().get(i));
		}
		// Message.RecipientType.TO属性表示接收者的类型为TO    
		mailMessage.setRecipients(Message.RecipientType.TO,tos);    
      // 设置邮件消息的主题    
      mailMessage.setSubject(mailInfo.getSubject());    
      // 设置邮件消息发送的时间    
      mailMessage.setSentDate(new Date());    
      // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象    
      // 设置邮件消息的主要内容    
      String mailContent = mailInfo.getContent();    
      mailMessage.setText(mailContent); 
      
      Multipart mainPart = new MimeMultipart();    
      // 创建一个包含HTML内容的MimeBodyPart    
      BodyPart html = new MimeBodyPart();    
      // 设置HTML内容    
      html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");    
      mainPart.addBodyPart(html);    
      // 将MiniMultipart对象设置为邮件内容    
      mailMessage.setContent(mainPart);    
      // 发送邮件    
      Transport.send(mailMessage);    
      return true;    
      } catch (MessagingException ex) {    
          ex.printStackTrace();    
      }    
      return false;    
    }    
    /**   
     * 发送带附件的  
     * @param mailInfo 待发送的邮件信息   
     */    
    public  boolean sendAccessoryMail(MailSenderInfo 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);    
    		// 创建邮件的接收者地址,并设置到邮件消息中  
    		int address_size=mailInfo.getToAddressList().size();
    		Address[] tos=new Address[address_size];
    		for(int i=0;i<address_size;i++){
    			tos[i]=new InternetAddress(mailInfo.getToAddressList().get(i));
    		}
    		// Message.RecipientType.TO属性表示接收者的类型为TO    
    		mailMessage.setRecipients(Message.RecipientType.TO,tos);    
    		// 设置邮件消息的主题    
    		mailMessage.setSubject(mailInfo.getSubject());    
    		// 设置邮件消息发送的时间    
    		mailMessage.setSentDate(new Date());    
    		 
    	      
    		// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象    
    		Multipart mainPart = new MimeMultipart();    
    		//发送附件的话就不能直接设置文本内容了,也得加入到mainpart
    		BodyPart  contentBody=new MimeBodyPart();
    		contentBody.setText(mailInfo.getContent());
    		mainPart.addBodyPart(contentBody);
    		// 创建一个包含HTML内容的MimeBodyPart    
    		BodyPart accessorybody = null;    
    		if(!mailInfo.getAttachFileNames().isEmpty()){//有附件  
               for(int i=0;i<mailInfo.getAttachFileNames().size();i++){
            	   String filename=mailInfo.getAttachFileNames().get(i);
            	   accessorybody=new MimeBodyPart();
            	   FileDataSource fds=new FileDataSource(filename);
            	   accessorybody.setDataHandler(new DataHandler(fds));
            	   accessorybody.setFileName(fds.getName());
            	   
            	   mainPart.addBodyPart(accessorybody);
               } 
               mailInfo.getAttachFileNames().clear();
            }     
    		// 将MiniMultipart对象设置为邮件内容    
    		mailMessage.setContent(mainPart);    
    		// 发送邮件    
    		Transport.send(mailMessage);    
    		return true;    
    	} catch (MessagingException ex) {    
    		ex.printStackTrace();    
    	}    
    	return false;    
    }    
}   

如何使用?

MailSenderInfo mailInfo = new MailSenderInfo();
				mailInfo.setMailServerHost("smtp.163.com");
				mailInfo.setMailServerPort("25");
				mailInfo.setValidate(true);
				mailInfo.setUserName("名字");
				mailInfo.setPassword("密码");// 您的邮箱密码
				mailInfo.setFromAddress("xxxxx@163.com");
				mailInfo.addToAddress("xxxxxxxx@qq.com");
				
				mailInfo.setSubject("标题");
				mailInfo.setContent("内容看下多少字合适啊");
				 ArrayList<String> file=new ArrayList<String>();
				 file.add(Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.pptx");
				 mailInfo.setAttachFileNames(file);
				 
				 mailInfo.addAttachFileName(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Vlog.xml");
				// 这个类主要来发送邮件
				SimpleMailSender sms = new SimpleMailSender();
				return	sms.sendAccessoryMail(mailInfo);


以上需要2个jar包  mail.jar 和activation.jar

下载地址:2个jar包下载地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值