用JAMES兑现自己的邮件服务器(转)
Phoenix 4.2 James Mail Server 2.3.1 Phoenix 4.2 James Mail Server 2.3.1 总结
Using PHOENIX_TMPDIR: C:\james\temp
Using JAVA_HOME: C:\j2sdk1.4.2_02
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabledpackage com.yy.jamesstudy;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Mail {
private String mailServer, From, To, mailSubject, MailContent;
private String username, password;
private Session mailSession;
private Properties prop;
private Message message;
// Authenticator auth;//认证
public Mail() {
// 设置邮件相关
username = "kakaxi";
password = "kakaxi";
mailServer = "localhost";
From = "kakaxi@localhost";
To = "mingren@localhost";
mailSubject = "Hello Scientist";
MailContent = "How are you today!";
}
public void send(){
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(From)); // 设置发件人
message.setRecipient(Message.RecipientType.TO,
new InternetAddress(To));// 设置收件人
message.setSubject(mailSubject);// 设置主题
message.setContent(MailContent, "text/plain");// 设置内容
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) {
Mail mail;
mail = new Mail();
System.out.println("sending......");
mail.send();
System.out.println("finished!");
}
}
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);
}
}
<v:shapetype id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f" coordsize="21600,21600" o:spt="75"> </v:shapetype>
package com.yy.jamesstudy;
import javax.mail.MessagingException;
import org.apache.mailet.GenericRecipientMatcher;
import org.apache.mailet.MailAddress;
/**
* System jamesstudy
* Package com.yy.jamesstudy
*
* @author Yang Yang
* Created on 2007-9-14下午02:17:07
*/
public class BizMatcher extends GenericRecipientMatcher {
public boolean matchRecipient(MailAddress recipient) throws MessagingException {
//只接受邮件地址包含鸣人的邮件
if (recipient.getUser().indexOf("mingren")!=-1) {
return true;
}
return false;
}
}
package com.yy.jamesstudy;
import java.io.IOException;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.apache.mailet.GenericMailet;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
/**
* System jamesstudy
* Package com.yy.jamesstudy
*
* @author Yang Yang
* Created on 2007-9-14下午02:16:31
*/
public class BizMaillet extends GenericMailet {
public void service(Mail mail) {
MailAddress ma = mail.getSender();
System.out.println("sender:"+ma.toInternetAddress().toString());
try {
MimeMessage mm = mail.getMessage();
System.out.println("content:"+(String)mm.getContent().toString());
} catch (IOException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
GenericMailet 是一个mailet的基本实现。
<mailetpackages>
<mailetpackage>org.apache.james.transport.mailetsmailetpackage>
<mailetpackage>org.apache.james.transport.mailets.smimemailetpackage>
mailetpackages>
<matcherpackages>
<matcherpackage>org.apache.james.transport.matchersmatcherpackage>
<matcherpackage>org.apache.james.transport.matchers.smimematcherpackage>
matcherpackages>
<mailetpackages>
<mailetpackage>com.yy.jamesstudymailetpackage>
<mailetpackage>org.apache.james.transport.mailetsmailetpackage>
<mailetpackage>org.apache.james.transport.mailets.smimemailetpackage>
mailetpackages>
<matcherpackages>
<matcherpackage>com.yy.jamesstudy matcherpackage>
<matcherpackage>org.apache.james.transport.matchersmatcherpackage>
<matcherpackage>org.apache.james.transport.matchers.smimematcherpackage>
matcherpackages>
3)加入 Matcher 和 Mailet的关联关系
<mailet match="BizMatcher" class="BizMaillet"/>
Mailet元素代表了一个matcher和一个mailet的组合。Match属性:是指matcher的类名。而class 属性:是指mailet的类名。
Using PHOENIX_TMPDIR: C:\james\temp
Using JAVA_HOME: C:\j2sdk1.4.2_02
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabled
sender:kakaxi@localhost
content:How are you today!