Java 具有特殊字符的SMTPTransport和电子邮件
我正在使用Spring和JavaMailSenderImpl发送电子邮件。但当我试图向带有特殊字符的电子邮件地址发送电子邮件时-fake@gmail.com我得到以下错误:Java 具有特殊字符的SMTPTransport和电子邮件,java,spring,email,jakarta-mail,Java,Spring,Email,Jakarta Mail,我正在使用Spring和JavaMailSenderImpl发送电子邮件。但当我试图向带有特殊字符的电子邮件地址发送电子邮件时-fake@gmail.com我得到以下错误: nested exception is: com.sun.mail.smtp.SMTPAddressFailedException: 554 5.1.1 concei o-fake@gmail.com>: Recipient address rejected: User unknown in local recip
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 554 5.1.1 concei o-fake@gmail.com>: Recipient address rejected: User unknown in local recipient table
org.springframework.mail.MailSendException: Failed messages: javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 554 5.1.1 concei o-fake@gmail.com>:
Recipient address rejected: User unknown in local recipient table
; message exception details (1) are:
Failed message 1:
javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 554 5.1.1 concei o-fake@gmail.com>:
Recipient address rejected: User unknown in local recipient table
at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1294)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:635)
我的JavaMailSenderImpl配置为:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="defaultEncoding" value="UTF-8" />
<property name="host">
<value>${application.mail.host}</value>
</property>
<property name="port">
<value>${application.mail.port}</value>
</property>
<property name="username">
<value>${application.mail.username}</value>
</property>
<property name="password">
<value>${application.mail.password}</value>
</property>
<property name="javaMailProperties">
<props>
<prop key="mail.mime.charset">UTF-8</prop>
</props>
</property>
</bean>
代码将地址发送到邮件服务器,但当它转换为字节时,不会考虑非ASCII字符
因此,无法使用Spring框架将电子邮件发送到具有特殊字符的地址?我的邮件服务器不符合RFC6530。邮件地址不是RFC5322定义的有效地址。您的邮件服务器可能不符合RFC6530?请看:我不认为问题出在我的邮件服务器上,因为当我通过我的电子邮件帐户发送电子邮件时,它们是在那个地址上收到的。但是我去检查了。
protected void sendCommand(String cmd) throws MessagingException {
sendCommand(ASCIIUtility.getBytes(cmd));
}