Linux下Apache James 邮件安装与发送程序

-

1. 下载:apache-james-3.0-beta3-app.tar.gz,

URL是http://james.apache.org/download.cgi

2. 解压 tar -zxf

apache-james-3.0-beta3-app.tar.gz

3. 启动

cd

apache-james-3.0-beta3-app/bin

./run.sh

./james start

4.

添加域名

cd apache-james-3.0-beta3-app/bin

./james-cli.sh --host

127.0.0.1 adddomain localhost

5. 添加用户

cd

apache-james-3.0-beta3-app/bin

./james-cli.sh --host 127.0.0.1 adduser

test@asbinms.com test

6. 通过邮件服务器发送邮件(Java实现)

EmailAuthenticator.java

package mail;

import javax.mail.Authenticator;   
import javax.mail.PasswordAuthentication;   

public class EmailAuthenticator extends Authenticator {   
    private String m_username = null;   
  
    private String m_userpass = null;   
  
    void setUsername(String username) {   
        m_username = username;   
    }   
  
    void setUserpass(String userpass) {   
        m_userpass = userpass;   
    }   
  
    public EmailAuthenticator(String username, String userpass) {   
        super();   
        setUsername(username);   
        setUserpass(userpass);   
    }   
  
    public PasswordAuthentication getPasswordAuthentication() {   
        return new PasswordAuthentication(m_username, m_userpass);   
    }   
}  

SendMail.java

package mail;

import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
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;
import javax.mail.internet.MimeUtility;

public class SendMail {

        private String mailServer, username, password;
        private Session mailSession;
        private Properties prop;
        private Message message;

        /**
         * // 设置邮件服务器相关
         * @param mailServer: 
         * @param username: 
         * @param password: 
         */
        public SendMail(String mailServer, String username, String password) {
                this.mailServer = mailServer;
                this.username = username;
                this.password = password;
        }

        /**
         * 
         * @param to : 
         * @param mailSubject:
         * @param mailContent
         */
        public void send(String to, String mailSubject, String mailContent) {
                EmailAuthenticator mailauth = new EmailAuthenticator(username, password);
                // 设置邮件服务器
                prop = System.getProperties();
                prop.put("mail.smtp.auth", "true");
                prop.put("mail.smtp.host", mailServer);
                // 产生新的Session服务
                mailSession = mailSession.getDefaultInstance(prop, (Authenticator) mailauth);
                message = new MimeMessage(mailSession);

                try {
                        message.setFrom(new InternetAddress(username)); // 设置发件人
                        message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));// 设置收件人
                        message.setSubject(mailSubject);// 设置主题
//                      message.setContent(mailContent, "text/plain");// 设置内容,中文乱码,用下面的方法
                
                        // 设置内容
                        Multipart multipart = new MimeMultipart();
                        MimeBodyPart mimeBodyPart = new MimeBodyPart();                         
                        mimeBodyPart.setText(mailContent);                      
//                      mimeBodyPart.setFileName(MimeUtility.encodeText(mailContent, "GBK", "B")); //对邮件头采用base64方式编码   
                        multipart.addBodyPart(mimeBodyPart);   
                        message.setContent(multipart);
                        
                        // 设置日期
                        message.setSentDate(new Date());
                        Transport tran = mailSession.getTransport("smtp");
                        tran.connect(mailServer, username, password);
                        tran.send(message, message.getAllRecipients());
                        tran.close();
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }

        public static void main(String[] args) {
                SendMail mail;
                mail = new SendMail("localhost", "test@localhost", "test");
                System.out.println("sending......");
                mail.send("test@localhost", "-=> < tttt", "xx-=> <  xxxxx");
                System.out.println("finished!");
        }
}