使用java发送邮件失败

使用java发送邮件失败,java,email,Java,Email,我使用java和web驱动程序在我的应用程序中使用java mail API发送邮件。我的要求是在链接/url关闭时发送邮件。即使在我错误地给出url时发送邮件,但同时如果由于任何其他问题(未找到页面)导致url未加载,则发现邮件未被发送 public void SendMail(String url,String str) { try { Sheet mailsheet = w.getSheet("mail");

我使用java和web驱动程序在我的应用程序中使用java mail API发送邮件。我的要求是在链接/url关闭时发送邮件。即使在我错误地给出url时发送邮件,但同时如果由于任何其他问题(未找到页面)导致url未加载,则发现邮件未被发送

public void SendMail(String url,String str)
{        
    try
    {

        Sheet mailsheet = w.getSheet("mail");            
        String from = mailsheet.getCell(0,1).getContents().toString().trim();      
        String  toEmailID=mailsheet.getCell(1,1).getContents().toString().trim();   
        Properties props = new Properties();     
        String mailprotocol = mailsheet.getCell(2,1).getContents().toString().trim();   
        String mailprotocoltype = mailsheet.getCell(3,1).getContents().toString().trim();   
        String mailhost = mailsheet.getCell(4,1).getContents().toString().trim();   
        String mailhostip = mailsheet.getCell(5,1).getContents().toString().trim(); 
        String mailport=mailsheet.getCell(6,1).getContents().toString().trim(); 
        String mailportid=mailsheet.getCell(7,1).getContents().toString().trim();
        props.put(mailprotocol,mailprotocoltype);
        props.put(mailhost,mailhostip);
        props.put(mailport,mailportid);
        javax.mail.Session mailSession =javax.mail.Session.getInstance(props);
        Message msg = new MimeMessage(mailSession);
        msg.setFrom(new InternetAddress(from));
        msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(toEmailID));          
        msg.setSubject("Test Summary");       
        msg.setContent("<html><body>Dear Admin,<br> Website page  "+ "<b><i>"+url + "</b></i>"+" cannot be loaded due to the following :<br> <br></body></html>"+str,"text/html");
        Transport.send(msg);
        System.out.println("Mail is successfully sent to Recipient address with Error information.");
    }
    catch(Exception e)
    {
        //System.out.println(e);
        System.out.println("Mail cannot be send to Recipient address due to connection error");
    } 
}

public void x() {
    SendMail(url,driver.getTitle());    
}
publicsvoidsendmail(字符串url,字符串str)
{        
尝试
{
Sheet mailsheet=w.getSheet(“邮件”);
字符串from=mailsheet.getCell(0,1.getContents().toString().trim();
String-toEmailID=mailsheet.getCell(1,1.getContents().toString().trim();
Properties props=新属性();
字符串mailprotocol=mailsheet.getCell(2,1.getContents().toString().trim();
字符串mailprotocoltype=mailsheet.getCell(3,1.getContents().toString().trim();
字符串mailhost=mailsheet.getCell(4,1.getContents().toString().trim();
字符串mailhostip=mailsheet.getCell(5,1.getContents().toString().trim();
字符串mailport=mailsheet.getCell(6,1.getContents().toString().trim();
字符串mailportid=mailsheet.getCell(7,1.getContents().toString().trim();
props.put(mailprotocoltype,mailprotocoltype);
props.put(mailhost,mailhostip);
道具放置(mailport,mailportid);
javax.mail.Session-mailSession=javax.mail.Session.getInstance(props);
Message msg=新的mimessage(mailSession);
msg.setFrom(新因特网地址(from));
msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(toEmailID));
msg.setSubject(“测试总结”);
msg.setContent(“亲爱的管理员,
由于以下原因,

”+str,“text/html”)无法加载网站页面“+”+url+++”; 发送(msg); System.out.println(“邮件已成功发送到带有错误信息的收件人地址。”); } 捕获(例外e) { //系统输出打印ln(e); System.out.println(“由于连接错误,邮件无法发送到收件人地址”); } } 公共空间x(){ SendMail(url,driver.getTitle()); }
答案可能在您没有向我们展示的代码中:测试URL的部分。
由于未找到页面,错误域名的响应代码与响应代码不同。此外,根据所针对的系统,可能会将未找到的页面重定向到索引页面,从而使检测更加困难。

它是如何失败的?您是遇到异常,还是只是没有发送?第一个想法是,在发送邮件之前,try块被中断。我没有得到任何异常。它只是没有得到发送。另外,SOP正在打印邮件发送到收件人地址这可能是任何东西。你有很多
mailsheet.getCell(7,1)
…所以在那里放一个断点,调试它,查看每个属性得到的值,并确保它是正确的。谁是电子邮件提供商?如果是内部的,请检查电子邮件服务器上的日志,查看是否发送了电子邮件请求。这也是一个糟糕的测试。页面可能会“关闭”,原因有很多,你应该定义“关闭”的确切含义,尽管有很多免费服务正是这么做的。这与Selenium或WebDriver无关(后者不支持,与发送电子邮件无关)。您提供的代码片段中实际上没有Selenium/WebDriver;要获取页面,那么您要测试什么?另外,从您更新的代码来看,如果driver.get()失败,driver.getTitle()也不会有帮助。