【发布时间】:2017-12-18 11:04:48
【问题描述】:
我们有一个 Exchange Server,我想测试用它发送邮件。但不知何故,我总是得到错误:
com.sun.mail.smtp.SMTPSendFailedException: 550 5.7.1 Message rejected as spam by Content Filtering.
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2108)
at com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:1889)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1120)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at Test.sendMailJava(Test.java:89)
at Test.main(Test.java:29)
如果允许匿名用户并且他们是允许的,我尝试查看我们的交换,我们的打印机也会发送未经任何身份验证的邮件。
这是我的Java代码,希望有人能帮忙:
import java.net.URI;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.simplejavamail.email.Email;
import org.simplejavamail.mailer.Mailer;
import org.simplejavamail.mailer.config.ProxyConfig;
import org.simplejavamail.mailer.config.ServerConfig;
import org.simplejavamail.util.ConfigLoader;
public class Test {
public static void main(String[] args) {
//// // TODO Auto-generated method stub
sendMailJava();
}
public static void sendMailJava()
{
String to = "Recipient"
// Sender's email ID needs to be mentioned
String from = "Sender";
// Assuming you are sending email from localhost
String host = "Server Ip-Adress";
// Get system properties
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
properties.setProperty("mail.smtp.port", "25");
properties.setProperty("mail.imap.auth.plain.disable","true");
properties.setProperty("mail.debug", "true");
Session session = Session.getDefaultInstance(properties);
try {
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// Set Subject: header field
message.setSubject("Subject");
// Now set the actual message
message.setContent("Content", "text/html; charset=utf-8");
// Send message
Transport.send(message);
System.out.println("Sent message successfully....");
}catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
我也试过 SimpleMail,但还是一样的错误。
与 smtp 服务器的连接似乎有效,但无法发送消息,原因是上述错误。会是什么?
您好,
凯文
编辑:
我发现了我的错误,我不知道为什么我们的打印机可以毫无错误地发送邮件,但似乎我不得不在我们的交换服务器上将我的 ip 列入白名单。代码完全没问题。
感谢帮助
【问题讨论】:
-
为什么不让他们在 Exchange 服务器上为您创建一个帐户并使用 EWS 发送邮件?
-
我在服务器上有一个帐户,但我想尝试在不使用 Outlook 的情况下发送电子邮件,就像我说我们的扫描仪和打印机也可以在没有任何身份验证的情况下发送邮件,这没关系,所以它必须工作不知何故...我的理论是邮件标题或文本中的某些内容不正确,因此垃圾邮件过滤器会立即捕获电子邮件,但我不知道是什么
-
我知道在我们的办公室里,我们的服务器上什至没有打开 smtp 端口。如果我是网络管理员并且它是开放的,我会设置服务器,以便只有特定 IP 可以使用它,其余的将被视为垃圾邮件。
-
为什么不能打开 smtp 端口?我的意思是我们公司想发邮件对吧?我是我们公司的系统管理员,我看不到我们服务器的任何限制
-
因为 Exchange 不使用 smtp。它使用 mapi
标签: java smtp jakarta-mail exchange-server