ITPub博客

首页 > 应用开发 > Java > 自己写的一个Java Mail 实例

自己写的一个Java Mail 实例

原创 Java 作者:liang573728 时间:2019-04-08 09:42:08 0 删除 编辑

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;

[@more@]

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/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: java mail实例
请登录后发表评论 登录
全部评论

注册时间:2005-10-15

  • 博文量
    152
  • 访问量
    138345