这仅适用于(smtp.office365.com)smtp。
public int sendEmail(String fromName,String fromAddress,ArrayList toAddressList ,ArrayList ccAddressList,ArrayList bccAddressList,String subject,String message,String SmtpServerIP,String smtpUserName,String smtpPassword, ArrayList<String> attachmentFilePath ){
SMTP_HOST_NAME=SmtpServerIP;
SMTP_AUTH_USER=smtpUserName;
SMTP_AUTH_PWD=smtpPassword;
String emailmultipart="true";
String smtpHost=SmtpServerIP;
//System.out.println("SmtpServerIP"+SmtpServerIP);
System.out.println("fromName :"+fromName+":SmtpServerIP:"+SmtpServerIP+":smtpPassword:"+smtpPassword+":smtpUserName:"+smtpUserName);
boolean debug = false;
Properties props = new Properties();
props.put("mail.smtp.starttls.enable","true");
props.setProperty("mail.transport.protocol", "smtp");
if(smtpHost==null){
return -99;
}
if(smtpHost.length()>0){
//props.put("mail.smtp.host", smtpHost);
props.setProperty("mail.host", smtpHost);
}
else
{
return 1;
}//Error No SmtpHost name Found.
/* if(smtpUserName!=null && smtpUserName.length()>0){
props.setProperty("mail.user", smtpUserName);
}
if(smtpPassword!=null && smtpPassword.length()>0){
props.setProperty("mail.password", smtpPassword);
}*/
Session session=null;
if(smtpUserName!=null && smtpUserName.length()>0&&smtpPassword!=null && smtpPassword.length()>0){
System.out.println("smtpUserName111111111111111"+smtpUserName);
props.put("mail.smtp.auth","true");
Authenticator auth = new SMTPAuthenticator();
session = Session.getDefaultInstance(props, auth);
}else{
System.out.println("smtpUserName2222222222222222"+smtpUserName);
session = Session.getDefaultInstance(props, null);
}
session.setDebug(debug);
try{
//System.out.println("toAddressList.size()"+toAddressList.size());
Message msg = new MimeMessage(session);
InternetAddress from = new InternetAddress(fromAddress,fromName);
String msgSubject=subject;
msg.setFrom(from);
msg.setSubject(msgSubject);
msg.setContent(message, "text/html; charset=utf-8");
//msg.setSentDate(new Date(2005,9,12));
//for adding TO address list.
if(toAddressList.size()>0){
Address toAddresses[]= new InternetAddress[toAddressList.size()];
toAddresses=getAddresses(toAddressList);
//System.out.println(" toAddresses |||"+toAddresses);
msg.setRecipients(Message.RecipientType.TO,toAddresses);
}
else{
return 2;
}
//for adding CC address list.
if(ccAddressList.size()>0){
Address ccAddresses[]= new InternetAddress[ccAddressList.size()];
ccAddresses=getAddresses(ccAddressList);
msg.setRecipients(Message.RecipientType.CC,ccAddresses);
}
//for adding BCC address list.
if(bccAddressList.size()>0){
Address bccAddresses[]= new InternetAddress[bccAddressList.size()];
bccAddresses=getAddresses(bccAddressList);
msg.setRecipients(Message.RecipientType.BCC,bccAddresses);
}
if(attachmentFilePath.size()>0){
//System.out.println("Inside File Attachment attachmentFilePath.length()"+attachmentFilePath.length());
//File file=new File(attachmentFilePath);
//if(file.exists()){
msg=attachFileAndMessage(msg,attachmentFilePath,message);
//}else{
// System.out.println("File does Not exists.");
// return 3;
//}
}
// Transport.send(msg);
msg.saveChanges(); // implicit with send()
Transport transport = session.getTransport("smtp");
//System.out.println("smtpHost :: "+smtpHost+" smtpUserName ::"+smtpUserName+" smtpPassword ::"+smtpPassword);
transport.connect();
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
}
catch(MessagingException mex){
mex.printStackTrace();
String errmsg=mex.getMessage().toString();
if(errmsg.indexOf("Unknown SMTP host")>-1){
System.out.println("Invalid SMTP server entry");
return 101;
}else if(errmsg.indexOf("Invalid Addresses")>-1){
System.out.println("Invalid Address entry");
return 102;
}
System.out.println("Error 1 ::"+mex.getMessage());
mex.printStackTrace();
return 4;
}
catch(Exception e){
System.out.println("Error 2 ::"+e.getMessage());
e.printStackTrace();
return 5;
}
return 0;
}
我在使用旧版本的javax时遇到了这个错误。邮件(1.3.1)。当我切换到更高版本(1.4.4)时,问题消失了。
如果您使用的是Eclipse,那么您可能需要查看项目正在使用的库的构建路径,不仅是您指定的外部库,还包括内置库,如JavaEE5等,其中可能包含该库的旧版本。
您可以通过在代码中调试以下语句来检查正在使用的库的确切版本:Session=Session。getInstance(…
它不会显示源代码,但会给你它使用的mail.jar的目录路径,你可以打开它查看版本(在MANIFEST文件中)。
如果在添加上述代码后错误仍然存在。请参考邮件。这是项目的一部分。可能是邮件。该项目的jar已损坏。使用最新版本的mail进行更改。罐和检查
我觉得你有问题。你的授权是空的。
Authenticator auth = new SMTPAuthenticator();
尝试
Authenticator auth = new Authenticator()
{
@Override
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(SMTP_AUTH_USER, SMTP_AUTH_PWD);
}
};
这个代码对我有用。javax。邮件v1。5.
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class Main {
public static void main(String[] args) {
final String smtpAuthUserName = "YOUR_ADDRES@YOURCOMPANY.COM";
final String smtpAuthPassword = "YOUR_PASSWORD";
String emailFrom = "EMAIL_FROM";
String emailTo = "EMAIL_TO";
Authenticator authenticator = new Authenticator()
{
@Override
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(smtpAuthUserName, smtpAuthPassword);
}
};
Properties properties = new Properties();
properties.setProperty("mail.smtp.host", "smtp.office365.com");
properties.setProperty("mail.smtp.port", "587");
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.starttls.enable", "true");
Session session = Session.getInstance( properties, authenticator );
try
{
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(emailFrom));
InternetAddress[] to = {new InternetAddress(emailTo)};
message.setRecipients(Message.RecipientType.TO, to);
message.setSubject("PLACE_SUBJECT_HERE");
message.setText("YOUR_MESSAGE_HERE");
Transport.send(message);
}
catch (MessagingException exception)
{
exception.printStackTrace();
}
}
}
我有一个java程序(从谷歌复制的)可以使用office365 SMTP发送电子邮件,它作为一个独立的java程序运行良好,但当我在web应用程序的中将这个java程序部署为jar文件,并从JSP调用该方法时,它抛出了以下错误: 有人能分享一下他们对这个问题的看法吗。java代码:
我目前拥有的代码是: 我试图发送到的电子邮件地址托管在Office 365的Outlook上。我们可能需要稍后更改特定地址,但它们可能配置相同。 但是,每当我尝试运行命令时,都会收到同样的错误,错误的全文是: 我已经尝试了一些不同的方法,比如在25到587之间切换端口,将主机更改为office365的,或者将和切换为true或false。但是我总是看到同样的错误。我还遗漏了什么吗?
我正在用asp发送outlook电子邮件。净c#。 当我运行这个程序时,我在(smtp.Send(fromAddress,toAddress,subject,body);)上遇到了一个错误我在网上搜索,试图解决问题,但什么也没找到。请帮忙。我真的很感激。
我目前有一个邮件服务器正在运行。我可以通过 mywebsite.com/roundcube/ 从这个网站我可以发送和接收电子邮件适当。日志显示所有的邮件进出都很好。我从这里发到我的gmail账户,然后又发回来。 然而,我真正想做的是使用javax mail从java发送一些邮件。
我正在编写一个Rust应用程序,它将通过启用了SMTP功能的Exchange服务器发送电子邮件。根据微软的网页,需要的设置是: 服务器地址smtp.office365.com 端口587 已启用StartTLS 邮件帐户登录凭据 网络邮件服务的POP/IMAP设置证实了这一点。 这是我的代码(带有一些审查): 当我编译和运行代码时,它给了我这个错误: 错误(永久(响应{代码:代码{严重性:Perm
我必须用我的网络应用程序发送邮件。给定下面显示< code >的代码,SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应是: 5.7.57 SMTP;客户端在邮件发送过程中未通过身份验证发送匿名邮件。 帮我找到一个合适的解决方案。非常感谢。 代码: