package yash.noteappapi.mail;
import org.springframework.core.env.Environment;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Component;
@Component
public class FeedbackMailSender implements FeedbackSender
{
private JavaMailSenderImpl mailSender;
public FeedbackMailSender(Environment environment){
mailSender = new JavaMailSenderImpl();
mailSender.setHost(environment.getProperty("spring.mail.host"));
mailSender.setPort(Integer.parseInt(environment.getProperty("string.mail.port")));
mailSender.setUsername(environment.getProperty("string.mail.username"));
mailSender.setPassword(environment.getProperty("spring.mail.password"));
}
@Override
public void sendFeedback(String from, String name, String feedback) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo("feedback@noteapp.com");
message.setSubject("New feedback from " + name);
message.setText(feedback);
message.setFrom(from);
this.mailSender.send(message);
}
}
这给出了错误
构造函数抛出异常;嵌套异常为 java.lang.NullPointerException 引起原因:java.lang.NullPointerException:null
它似乎是由Integer.parseInt()
引起的,但是由于port是一个int值,因此如果不将其解析为int就不会设置该端口,
答案 0 :(得分:1)
这两行中有错别字:
private string GetWebService(string token, int testId, string phone)
{
try
{
var serviceUrl = "https://test.com/Soap";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
httpWebRequest.ContentType = "text/xml";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
var xmlData = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:doc=\"http://test.com\">" +
" <soapenv:Header/>" +
" <soapenv:Body>" +
" <doc:AskForStackOverFlow>" +
" <doc:token>" + token + "</doc:token>" +
" <doc:testId>" + testId+ "</doc:testId>" +
" <doc:phone>" + phone + "</doc:phone>" +
" <doc:startTime>" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "</doc:startTime>" +
" </doc:AskForStackOverFlow>" +
" </soapenv:Body>" +
"</soapenv:Envelope>";
streamWriter.Write(xmlData);
}
var xmlResult = "";
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
xmlResult = streamReader.ReadToEnd();
}
if (string.IsNullOrEmpty(xmlResult))
return "";
var result = "";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlResult);
XmlNodeList nodes = doc.GetElementsByTagName("ns1:AskForStackOverFlowResult");
foreach (XmlNode item in nodes)
{
result = item.InnerText;
}
return result;
}
catch (Exception ex)
{
return ex.Message;
}
}
应为 spring.mail.port 和 spring.mail.username
如果不存在环境属性,则将它们解析为null,为您提供mailSender.setPort(Integer.parseInt(environment.getProperty("string.mail.port")));
mailSender.setUsername(environment.getProperty("string.mail.username"));
中的NPE