高难问题!!!!!!!!!
用java 发送mail .
用公司的服务器作为mail 服务器.
发觉只能给mail 地址是本公司的发送邮件,
不能发送给公司以外的mail地址发送邮件.
程序片段如下
public String dcSendMailForFiles(String from_id, String[] to_id,String cc_id[], String[] bcc_id,
String title, String msgbody ,String[] fileNames ,String[] true_file_name)
{
DCF504S0 envInf = new DCF504S0();
if((to_id == null || java.lang.reflect.Array.getLength(to_id) == 0)&&
(bcc_id == null || java.lang.reflect.Array.getLength(bcc_id) == 0))
return("0");
//if(envInf.getDCemailFlg() == false)
//return("0");
String emailHostIP = envInf.getDCemailHostIP();
if(emailHostIP == null || emailHostIP.length() <= 0)
return("0");
Properties props = new Properties();
props.put("mail.smtp.host", emailHostIP);
Session session = Session.getDefaultInstance(props, null);
try {
// create a message
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from_id));
if(to_id != null && java.lang.reflect.Array.getLength(to_id) > 0)
{
InternetAddress[] address = new InternetAddress[java.lang.reflect.Array.getLength(to_id)];
for(int i = 0; i < java.lang.reflect.Array.getLength(to_id); i++)
{
address[i] = new InternetAddress(to_id[i]);
}
msg.setRecipients(javax.mail.Message.RecipientType.TO, address);
}
if(cc_id != null && java.lang.reflect.Array.getLength(cc_id) > 0)
{
InternetAddress[] ccAddress = new InternetAddress[java.lang.reflect.Array.getLength(cc_id)];
for(int i = 0; i < java.lang.reflect.Array.getLength(cc_id); i++)
{
ccAddress[i] = new InternetAddress(cc_id[i]);
}
msg.setRecipients(javax.mail.Message.RecipientType.CC, ccAddress);
}
if(bcc_id != null && java.lang.reflect.Array.getLength(bcc_id) > 0)
{
InternetAddress[] bccAddress = new InternetAddress[java.lang.reflect.Array.getLength(bcc_id)];
for(int i = 0; i < java.lang.reflect.Array.getLength(bcc_id); i++)
{
bccAddress[i] = new InternetAddress(bcc_id[i]);
}
msg.setRecipients(javax.mail.Message.RecipientType.BCC, bccAddress);
}
msg.setSubject(title);
// create the Multipart and its parts to it
Multipart mp = new MimeMultipart();
// create and fill the first message part
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText(msgbody, "Shift_JIS");
mp.addBodyPart(mbp1);
if(fileNames != null && java.lang.reflect.Array.getLength(fileNames) > 0)
{
for(int i = 0; i < java.lang.reflect.Array.getLength(fileNames); i++)
{
// create the second message part
MimeBodyPart mbp2 = new MimeBodyPart();
// attach the file to the message
FileDataSource fds = new FileDataSource(fileNames[i]);
mbp2.setDataHandler(new DataHandler(fds));
// mbp2.setFileName(fds.getName());
MimeBodyPartForDC mbp2_dc = new MimeBodyPartForDC();
//mbp2_dc.setFileName( (MimePart)mbp2, fds.getName(), "iso-2022-jp");
mbp2_dc.setFileName( (MimePart)mbp2,true_file_name[i], "iso-2022-jp");
mp.addBodyPart(mbp2);
}
}
// add the Multipart to the message
msg.setContent(mp);
// set the Date: header
msg.setSentDate(new Date());
// send the message
Transport.send(msg);
return("0");
} catch (Exception mex) {
return(mex.toString());
}
}
我不太清楚是不是因为没有设置端口号,用户明,密码的缘故.
可是当我做了如下修改后,发现还是不能向外部发信.
Transport trans = session.getTransport("smtp");
trans .connect("emailHostIP ",port,"userName","password");
trans .send(msg);