当前位置: 首页 > 知识库问答 >
问题:

通过Android应用程序发送邮件使用javamail api没有用户交互

景靖琪
2023-03-14

我正在制作一个android应用程序,其中我必须通过邮件发送一些文本,我尝试了许多代码,但它们在java project中工作,但在android project中不工作,我搜索并尝试了几乎所有的帖子,在互联网上的任何地方都是如此,但没有人在工作,有人能给我在android中通过java mail API发送邮件的工作代码吗,除了这个邮件部分,我几乎完成了我的应用程序。所以请帮我解决这个问题。

logcat错误如下:-

09-03 22:41:58.636:DEBUG/SntpClient(58):请求时间失败:java。网SocketException:协议不支持地址族

有趣的是,我的应用程序在不同的设备上出现不同的错误(printstack错误),当我在emulator上运行应用程序时,我得到的错误是

"无法连接到SMTP主机:smtp.gamil.com,端口:587"

当我在Android手机上运行应用程序时,我得到的错误如下:-

msgstr"权限被拒绝(缺少internet权限?)"

我已经在清单文件中给出了互联网权限。

我已经尝试过的代码位于以下链接:-

Visit无法使用java mail api从android应用程序发送邮件

参观https://stackoverflow.com/questions/24088195/application-has-closed-unexpecteadly-forse-closed

共有1个答案

弘阳德
2023-03-14

以下是你可以做到的:

下载并添加这些jar文件后:commons电子邮件。罐子,邮件。罐子,激活。罐子和其他的。jar,你应该可以在后台发送电子邮件。

>

  • 首先,创建一个Async任务,以便您可以在后台发送电子邮件。然后在doInbackground中,添加以下代码——根据需要替换值。

    public class EmailSenderAsync extends AsyncTask <String, Void, Boolean> {
    
      private HtmlEmail email;
    
    
      @Override
      protected Boolean doInBackground(String... params)
      {
        String textMsg;
        try {
           String userEmail = params[0];
           String message = param[1];
    
           email = new HtmlEmail();
    
           email.setAuthenticator(new DefaultAuthenticator("youremail@yahoo.com",   "yourpasswordhere"));
    
           email.setSmtpPort(587);
    
           email.setHostName("smtp.gmail.com");
    
           email.setDebug(true);
    
    
           email.addTo(userEmail, "Whatever you want here");
    
           email.setFrom("youremail@yahoo.com", "Your business name");
    
           email.setSubject("Your email subject here");
    
    
           email.getMailSession().getProperties().put("mail.smtps.auth", "true");
    
           email.getMailSession().getProperties().put("mail.debug", "true");
    
           email.getMailSession().getProperties().put("mail.smtps.port", "587");
    
           email.getMailSession().getProperties().put("mail.smtps.socketFactory.port", "587");
    
           email.getMailSession().getProperties().put("mail.smtps.socketFactory.class",  "javax.net.ssl.SSLSocketFactory");
    
           email.getMailSession().getProperties().put("mail.smtps.socketFactory.fallback", "false");
    
           email.getMailSession().getProperties().put("mail.smtp.starttls.enable", "true");
    
           email.setTextMsg(message);
    
           email.send();
    
    
           return true;
    
        } catch (Exception e){
    
           return false;
        }
    
    }
    

    现在,您可以通过以下操作从任何需要发送电子邮件的地方呼叫它:

    new EmailSenderAsync().execute("useremail@gmail.com", "Thank you for contacting us this morning");
    

    那会解决你的问题。

    祝你好运,我希望这能有所帮助。

  •  类似资料:
    • 具有以下邮件配置设置: 以及以下属性: 我得到以下错误: JAVAlang.RuntimeException:javax。邮政MessaginException:无法连接到SMTP主机:SMTP。我们德勤。com,端口:25;嵌套的例外是:java。网SocketException:权限被拒绝: 当我使用gmail作为“发件人”帐户和“收件人”中的Outlook帐户时,代码是一样的。 我试着设置s

    • 我正在使用nodemailer发送电子邮件,但它只适用于电子邮件,不适用于gmail 这是配置连接 //节点邮件程序配置 在这里,我正在发送电子邮件,但无法发送gmail帐户。NodeEmailer 6.1.1无法与NodeJs一起工作

    • 我想用Java从我的公司Outlook帐户发送邮件。但它说邮箱无法访问。我试过各种解决方案,比如更改主机名,但还是不行。错误保持不变。请对此提出任何解决方案。下面是我面临的错误片段。注意:我使用javax mail来实现这个目的。

    • 我正在尝试使用java mail api从我的android应用程序发送电子邮件,当我在java project中运行代码时,它会成功发送邮件,但当我将此代码用于android应用程序时,logcat显示错误如下:- 09-03 15:18:57.549:ERROR/AndroidRuntime(277):致命异常:main 09-03 15:18:57.549: ERROR/AndreidRun

    • 我有一个IMAP服务器主机名:xyz.com.我的SMTP主机名是:comcast.net. 现在,当我通过Outlook发送电子邮件时,它会自动将我的ID[发件人ID]显示为:myusername@xyz.com而不是myusername@comcast.net. 我想用JavaMail API实现同样的目标。 当我使用JavaMail API时,它将发送者显示为myusername@comca

    • 我在ASP. Net Core中工作,并尝试从gmail使用smtp客户端发送电子邮件。有以下代码,但不起作用也看过以下帖子,但不起作用http://dotnetthoughts.net/how-to-send-emails-from-aspnet-core/ 它会跟踪错误 系统NotSupportedException:SMTP服务器不支持身份验证