首页 > 应用开发 > Java > 自己写的一个Java Mail 实例
package Mail;
import java.util.ArrayList;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.PasswordAuthentication;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.Message.RecipientType;
import javax.mail.internet.MimeMultipart;
public class sendEmail {
//public String hostName = "dwlnx01.xxx.com";
//public String login = "bpbat";
//public String password = "bp6002";
public String hostName = "localhost";
public String login;
public String password;
public String from;
public ArrayList toList = new ArrayList();
public ArrayList bcList = new ArrayList();
//public ArrayList ccList = new ArrayList();
public String filename;
public String ccList;
public Transport transport;
public Session session = null;
public String subject;
public String context;
private static boolean toFlag = true;
private static String encode = "GBK";
private static String contentEncode = "text/html;charset=GBK";
public sendEmail(){
}
public sendEmail(String sub,String text,String address,String file){
this.subject = sub;
this.context = text;
this.filename = file;
System.out.println("context is "+context+" "+text);
String[] list = address.split("|");
for(int i = 0;i < list.length;i ++){
String[] flag = list[i].split(":");
if( flag[0] != null && flag[0].toLowerCase().equals("from") ){
this.from = flag[1];
}
else if( flag[0] != null && flag[0].toLowerCase().equals("cc") ){
//this.ccList.add(flag[1]);
if (ccList == null){
this.ccList = flag[1];
}
else{
this.ccList = ccList + "," + flag[1];
}
}
else if( flag[0] != null && flag[0].toLowerCase().equals("bc") ){
this.bcList.add(flag[1]);
}
else if( flag[0] != null && flag[0].toLowerCase().equals("to") ){
this.toList.add(flag[1]);
}
}
if ( toList == null && ccList == null && bcList == null ) {toFlag = false;}
}
public boolean connect(){
try{
Properties props = new Properties();
props.put( "mail.smtp.host",hostName);
if ( login == null || login.equals("") ){
session = Session.getInstance(props);
}
else{
props.put( "mail.smtp.auth","true" );
MyAuthenticator auth = new MyAuthenticator(login,password);
session = Session.getDefaultInstance(props,auth);
}
transport = session.getTransport("smtp");
transport.connect();
return true;
}
catch( Exception e){
e.printStackTrace();
return false;
}
}
public void close(){
if( transport != null ){
try{
transport.close();
}
catch( Exception e ){
e.printStackTrace();
}
}
}
public boolean send(){
try{
MimeMessage mimeMessage = createMimeMessage();
transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
return true;
}
catch( Exception e){
e.printStackTrace();
return false;
}
}
public MimeMessage createMimeMessage() throws MessagingException{
MimeMessage message = new MimeMessage(session);
InternetAddress fromAddress;
if (from != null){
fromAddress = new InternetAddress(from);
message.setFrom( fromAddress );
}
if (toList !=null){
InternetAddress[] toAddress = new InternetAddress[toList.size()];
for(int i = 0;i < toList.size();i ++){
toAddress[i] = new InternetAddress((String)toList.get(i));
}
message.setRecipients(Message.RecipientType.TO,toAddress);
}
if (ccList != null){
//InternetAddress[] ccAddress = new InternetAddress[ccList.size()];
//for(int i = 0;i < ccList.size();i ++){
// ccAddress[i] = new InternetAddress((String)ccList.get(i));
//}
InternetAddress[] ccAddress = InternetAddress.parse(ccList);
message.setRecipients(Message.RecipientType.CC,ccAddress);
}
if (bcList != null){
InternetAddress[] bcAddress = new InternetAddress[bcList.size()];
for(int i = 0;i < bcList.size();i ++){
bcAddress[i] = new InternetAddress((String)bcList.get(i));
}
message.setRecipients(Message.RecipientType.BCC,bcAddress);
}
if (subject != null) message.setSubject(subject,encode);
if (filename == null && context != null){
//message.setText(context);
message.setContent(context,contentEncode);
}
else if (filename != null && filename.length() > 0){
Multipart multipart = new MimeMultipart();
MimeBodyPart mimeBodyPart = new MimeBodyPart();
mimeBodyPart.setContent(context,contentEncode);
multipart.addBodyPart( mimeBodyPart );
String[] temp = filename.split("|");
for( int i = 0;i < temp.length; i ++ ){
MimeBodyPart fileBodyPart = new MimeBodyPart();
DataSource dataSource = new FileDataSource( temp[i] );
fileBodyPart.setDataHandler(new DataHandler(dataSource) );
String[] displayName = temp[i].split("/");
fileBodyPart.setFileName( displayName[displayName.length - 1] );
multipart.addBodyPart(fileBodyPart);
}
message.setContent(multipart);
}
return message;
}
public static void main( String args[] ) throws Exception{
sendEmail buh = new sendEmail();
System.out.println("args is "+args.length);
if ( args.length == 3 ) {
buh = new sendEmail( args[0],args[1],args[2],null);
}
else if ( args.length == 4 ){
buh = new sendEmail( args[0],args[1],args[2],args[3]);
}
else {
System.out.println("---ERROR: number of Input paramter should be 3 or 4...");
throw new Exception("---ERROR: number of Input paramter should be 3 or 4 ...");
}
if (!toFlag ){
System.out.println("---ERROR: TO & CC & BCC address are null ...");
throw new Exception("---ERROR: TO & CC & BCC are null ...");
}
if (!buh.connect()){
System.out.println("---ERROR: sendEmail: Connect smtp failed ...");
throw new Exception("sendEmail: Connect smtp failed ...");
}
if (!buh.send()){
System.out.println("---ERROR: sendEmail: Send email failed ...");
throw new Exception("sendEmail: Send email failed ...");
}
buh.close();
}
}
class MyAuthenticator extends javax.mail.Authenticator{
private String strUser;
private String strPwd;
public MyAuthenticator(String user,String pwd){
this.strUser = user;
this.strPwd = pwd;
}
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(strUser, strPwd);
}
}
==============
使用例子:
sh send.sh
cat send.sh
#!/bin/sh
export CLASSPATH=/usr/users/bpbat/Billliang/Mail/lib/activation.jar:/usr/users/bpbat/Billliang/Mail/lib/mail.jar:.
sub="Test java Mail"
context="Hello,welcome xxxe.com n " = " < = < >& --OK"
#context="Hellowelcomesmartxxx.com"
file="/usr/users/bpbat/Billliang/Mail/lib/activation.jar|/usr/users/bpbat/Billliang/Mail/lib/mail.jar"
#addr="From:bill_liang@smartone-vodafone.com|to:bill_liang@xx.com"
addr="From:bill_liang@xxxx.com|to:bill_liang@xxx.com|Cc:bill_liang@xxx|cc:bill_liang@xxx.com"
#java Mail.sendEmail $sub $context $addr $file
java Mail.sendEmail "$sub" "$context" "$addr"
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/640706/viewspace-1017818/ ,如需转载,请注明出处,否则将追究法律责任。