嗨,我目前正在开发java应用程序,该应用程序将通过java mail Api(1.6.2)向多个收件人发送邮件,我已经根据Microsoft文档配置了SMTP。问题是代码正在使用我的个人hotmail电子邮件id,但对于公司office 365帐户,它失败了。
错误:javax.mail.身份验证失败异常:535 5.7.3身份验证不成功[PN1PR0101CA0066.INDPRD01.PROD.OUTLOOK.COM]
POP和IMAP正在工作(接收邮件),我可以使用Office 365 Web中的密码登录,我也尝试过更改密码。
代码:
User user = Credentials.ACC;
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.office365.com");//outlook.office365.com
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "587");//25
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.transport.protocol", "smtp");
//props.put("mail.smtp.ssl.enable", true);
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user.getUsername(), user.getPassword());
}
});
session.setDebug(true);
try {
MimeMessage msg = new MimeMessage(session);
msg.setFrom(user.getUsername());
msg.setRecipients(Message.RecipientType.TO,
"some@mail.com");
msg.setSubject("Testing SMTP using [" + user.getUsername() + "]");
msg.setSentDate(new Date());
msg.setText("Hey, this is a test from [" + user.getUsername() + "], Sending via Java Mail API");
Transport.send(msg);
System.out.println("Sent Ok");
} catch (MessagingException e) {
System.out.println("Something went wrong");
e.printStackTrace();
}
禁用STMP的现代身份验证:
https://admin.microsoft.com/Adminportal/Home?source=applauncher#/Settings/Services/:/Settings/L1/ModernAuthentication
等待几分钟以测试进行这些更改。
public class EWS {
private static ExchangeService service;
private static Integer NUMBER_EMAILS_FETCH = 5; // only latest 5 emails/appointments are fetched.
static {
try {
service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
service.setUrl(new URI("https://outlook.office365.com/EWS/exchange.asmx"));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Initialize the Exchange Credentials.
*/
public EWS() throws Exception {
ExchangeCredentials credentials = new WebCredentials("User Name", "Password");
service.setCredentials(credentials);
}
/**
* Reading one email at a time. Using Item ID of the email. Creating a
* message data map as a return value.
*/
public Map readEmailItem(ItemId itemId) {
Map messageData = new HashMap();
try {
Item itm = Item.bind(service, itemId, PropertySet.FirstClassProperties);
EmailMessage emailMessage = EmailMessage.bind(service, itm.getId());
messageData.put("emailItemId", emailMessage.getId().toString());
messageData.put("subject", emailMessage.getSubject());
messageData.put("fromAddress", emailMessage.getFrom().getAddress());
messageData.put("senderName", emailMessage.getSender().getName());
Date dateTimeCreated = emailMessage.getDateTimeCreated();
messageData.put("SendDate", dateTimeCreated.toString());
Date dateTimeRecieved = emailMessage.getDateTimeReceived();
messageData.put("RecievedDate", dateTimeRecieved.toString());
messageData.put("Size", emailMessage.getSize() + "");
messageData.put("emailBody", emailMessage.getBody().toString());
} catch (Exception e) {
e.printStackTrace();
}
return messageData;
}
/**
* Number of email we want to read is defined as NUMBER_EMAILS_FETCH,
*/
public List<Map> readEmails() {
List<Map> msgDataList = new ArrayList<>();
try {
service.setTraceEnabled(true);
System.out.println("|---------------------> service = {}" + service);
Folder folder = Folder.bind(service, WellKnownFolderName.Inbox);
FindItemsResults<Item> results = service.findItems(folder.getId(), new ItemView(NUMBER_EMAILS_FETCH));
int i = 1;
for (Item item : results) {
Map messageData = readEmailItem(item.getId());
System.out.println("|---------------------> service = {}" + (i++) + ":");
System.out.println("|---------------------> service = {}" + messageData.get("subject").toString());
System.out.println("|---------------------> service = {}" + messageData.get("senderName").toString());
msgDataList.add(messageData);
}
} catch (Exception e) {
e.printStackTrace();
}
return msgDataList;
}
public static void main(String[] args) throws Exception {
EWS msees = new EWS();
List<Map> emails = msees.readEmails();
System.out.println("|---------------------> service = {}" + emails.size());
}
}
我下载了Office 365 Connect ASP。NET MVC示例代码http://dev.office.com/code-samples-detail/5985,将其注册为Azure Active Directory中的应用程序(我具有全局管理员权限),并授予其所需的权限-“登录并读取用户配置文件”和“以用户身份发送邮件”(无其他权限),以及配置了web。配置为“ClientID”和“Cl
问题内容: 如果我不想通过SMTP而是通过sendmail发送邮件,是否有用于封装此过程的python库? 更好的是,是否有一个好的库可以抽象整个“ sendmail -versus- smtp”选择? 我将在大量的Unix主机上运行此脚本,其中只有一些在localhost:25上侦听;其中一些是嵌入式系统的一部分,不能设置为接受SMTP。 作为优良作法的一部分,我真的很想让库自己解决标头注入漏洞
我目前有一个邮件服务器正在运行。我可以通过 mywebsite.com/roundcube/ 从这个网站我可以发送和接收电子邮件适当。日志显示所有的邮件进出都很好。我从这里发到我的gmail账户,然后又发回来。 然而,我真正想做的是使用javax mail从java发送一些邮件。
本文向大家介绍python通过smpt发送邮件的方法,包括了python通过smpt发送邮件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python通过smpt发送邮件的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。
问题内容: 我正在使用。 使用发送电子邮件(通过)的最佳方法是什么? 问题答案: 有关使用Outlook的解决方案,请参见下面的TheoretiCAL答案。 否则,请使用python随附的smtplib。请注意,这将要求您的电子邮件帐户允许smtp,默认情况下不一定启用此功能。 编辑: 此示例使用保留域,如RFC2606中所述 为了使它真正与gmail配合使用,Doe先生需要进入gmail中的选项
本文向大家介绍Java通过exchange协议发送邮件,包括了Java通过exchange协议发送邮件的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java通过exchange协议发送邮件的具体代码,供大家参考,具体内容如下 pom.xml 导入包 application.properties 配置信息 代码 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊