繁体   English   中英

使用Java使用Gmail API发送电子邮件时出错

Error when sending email using Gmail API using Java

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试使用以下代码,以便使用新的Gmail API发送电子邮件。 我从不同的网站(特别是从Google的示例)中收集信息。 代码成功编译并获得成功授权后,代码仍在运行,并且没有任何结果! 它永远不会停止! 当然,它根本不会发送任何电子邮件! 因此,我需要您的意见,帮助和建议来解决此问题。 我很乐意将您的进一步详细信息或所需的Jar信息发送给您。 我认为错误可能出在主类中,我试图修复它但失败了。 非常感谢您的帮助。 谢谢

package test1;

import com.google.api.client.auth.oauth2.Credential;
import java.util.Arrays;
import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.auth.oauth2.GoogleOAuthConstants;
import com.google.api.client.googleapis.auth.oauth2.GoogleTokenResponse;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson.JacksonFactory;
import com.google.api.client.repackaged.org.apache.commons.codec.binary.Base64;
import com.google.api.services.gmail.Gmail;
import com.google.api.services.gmail.model.Message;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
public class Test1 {

    public static void main(String[] args) throws IOException, MessagingException ,FileNotFoundException //throws sendMail
    {
      //  System.out.println(getRequestUrl());
      //  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      //  emailCredentialSetup(br.readLine());
      //  sendMail("Alwa@gmail.com", "TEST1eee", "Hello");
      //  System.out.println("test");
      //  httpTransport = GoogleNetHttpTransport.newTrustedTransport();

      // initialize the data store factory
      // dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);

      // authorization
        System.out.println(getRequestUrl());
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        emailCredentialSetup(br.readLine());
        Test1 sendMail = new Test1();
        MimeMessage mail2;
        mail2 =  sendMail.createEmail("Alwa@gmail.com", "Alwa1@gmail.com", "yyyyyy", "kkkkkkkk");
        System.out.println("Obtener MIME: " + mail2);
        //sendMail(gmailClient, "from@gmail.com", mail2);
        sendMail("Alwa1@gmail.com", "TEST1eee", "Hello");

    }
    private static final String SCOPE = "https://www.googleapis.com/auth/gmail.modify";
    private static final String APP_NAME = "service_account";
    // Path to the client_secret.json file deloper Console
    private static final String CLIENT_SECRET_PATH = "./My Project-52.json";
    private static GoogleClientSecrets clientSecrets;
    private static GoogleAuthorizationCodeFlow flow;
    private static HttpTransport httpTransport;
    private static JsonFactory jsonFactory;
    private static Gmail service;

    public static String getRequestUrl() throws FileNotFoundException, IOException{
        httpTransport = new NetHttpTransport();
        jsonFactory = new JacksonFactory();

        clientSecrets = GoogleClientSecrets.load(jsonFactory, new FileReader(
                CLIENT_SECRET_PATH));

        // Allow user to authorize via url.
        flow = new GoogleAuthorizationCodeFlow.Builder(
                httpTransport, jsonFactory, clientSecrets, Arrays.asList(SCOPE))
        .setAccessType("online").setApprovalPrompt("auto").build();

        String url = flow.newAuthorizationUrl()
                .setRedirectUri(GoogleOAuthConstants.OOB_REDIRECT_URI).build();

        return url;
    }

    public static void sendMail(String to, String sub, String body) throws IOException, MessagingException {

        Message message = createMessageWithEmail(createEmail(to, "me", sub, body));
        message = service.users().messages().send("me", message).execute();

        System.out.println("Message id: " + message.getId());
        System.out.println(message.toPrettyString());
    }

    static void emailCredentialSetup(String code) throws IOException {
        // Generate Credential using retrieved code.
        GoogleTokenResponse response = flow.newTokenRequest(code)
                .setRedirectUri(GoogleOAuthConstants.OOB_REDIRECT_URI)
                .execute();
        GoogleCredential credential = new GoogleCredential()
                .setFromTokenResponse(response);

        // Create a new authorized Gmail API client
        service = new Gmail.Builder(httpTransport, jsonFactory,
                credential).setApplicationName(APP_NAME).build();
    }

    /**
       * Create a MimeMessage using the parameters provided.
       *
       * @param to Email address of the receiver.
       * @param from Email address of the sender, the mailbox account.
       * @param subject Subject of the email.
       * @param bodyText Body text of the email.
       * @return MimeMessage to be used to send email.
       * @throws MessagingException
     * @throws UnsupportedEncodingException 
       */
      private static MimeMessage createEmail(String to, String from, String subject,
          String bodyText) throws MessagingException, UnsupportedEncodingException {
        Properties props = new Properties();
        Session session = Session.getDefaultInstance(props, null);

        MimeMessage email = new MimeMessage(session);

        email.setFrom(new InternetAddress(from, "SPecial message"));
        email.addRecipient(javax.mail.Message.RecipientType.TO,
                           new InternetAddress(to));
        email.setSubject(subject);
        email.setText(bodyText);
        return email;
      }

      /**
       * Create a Message from an email
       *
       * @param email Email to be set to raw of message
       * @return Message containing base64 encoded email.
       * @throws IOException
       * @throws MessagingException
       */
      private static Message createMessageWithEmail(MimeMessage email)
          throws MessagingException, IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        email.writeTo(baos);
        String encodedEmail = Base64.encodeBase64URLSafeString(baos.toByteArray());
        Message message = new Message();
        message.setRaw(encodedEmail);
        return message;
      }   
}
问题暂未有回复.您可以查看右边的相关问题.
1 尝试使用gmail发送电子邮件时出错

我在需要时使用“ gmail ”发送电子邮件- 发生的是,当我尝试发送电子邮件时,它将引发错误 现在,当这种情况发生时, gmail (在gmail帐户中使用)询问是否可以安全地从该帐户接收电子邮件,我已指定“是”,现在它可以接收电子邮件了。 我确实想知道如何进一步解决该问题, ...

2 使用 mailR 通过 Gmail 发送电子邮件时出错

我正在尝试使用mailR包和 gmail 从 RStudio 发送电子邮件。 以下是我的代码... 我收到以下错误消息... 我到底做错了什么? 错误消息中提到的谷歌链接不存在。 编辑:收到一封来自谷歌的电子邮件,内容是“登录尝试被阻止:有人试图从不符合现代安全标准的应用程序登录..... ...

2016-05-20 09:32:31 2 11737   r/ gmail
4 使用Java发送电子邮件时出错

我正在尝试使用Java将电子邮件发送给某人。 我尝试使用以下代码,但无法正常工作。 我找不到程序中发生了什么错误。 看到下面是我的代码, 此代码无法正常工作,请帮助我... ...

2014-10-15 12:10:43 1 796   java
5 使用Java发送电子邮件时出错

我在用Java发送电子邮件时遇到问题。 我正在使用JavaMail API发送电子邮件。 我有一个程序,该程序使用pop3下载电子邮件附件,读取内容,进行一些处理,然后使用smtp将结果发送到电子邮件中。 该程序可以正常工作,直到发送电子邮件的最后一步,并且出现以下异常。 我正 ...

6 使用 Java 使用 GMAIL 发送电子邮件

如果可以在不需要从界面提供用户名和密码的情况下使用 Gmail 发送电子邮件,我想创建一个类或一个方法,并在这个类或方法中输入密码和用户名,然后发送电子邮件,我阅读了这个问题但是他们说您需要使用界面提供用户名和密码,我想创建自动发送电子邮件的自动过程。 这是我读到的问题 使用java发送电子邮件 ...

7 通过Java使用gmail发送电子邮件

我正在尝试使用以下代码通过Java发送电子邮件: 但是我收到以下错误: 我已经允许端口25通过防火墙,然后使用telnet“ telnet smtp.gmail.com 25”进行了测试,但出现此错误554 OutgoingFilter“由于发送垃圾邮件或病毒,请暂时将您推迟,请 ...

8 使用Java在Gmail帐户上发送电子邮件

我知道这个问题之前会被问到,但我认为这是2 - 3年前,事情发生了变化。 现在没有任何代码示例正在运行。 我在Java 1.6中尝试以下代码: 并抛出此异常: 我使用tomcat作为webserver,使用cxf framefork作为webservices。 任何帮助深表 ...

2011-09-13 18:19:53 3 3487   java
10 使用Gmail发送电子邮件

我不再可以使用Java Mail API从Gmail帐户发送邮件。 我怀疑应该对安全性进行一些更改。 我有这个简单的代码: 我知道我拥有正确的凭据来代替my gmail username和my password但仍然出现异常: 我什至为不太安全的应用程序启用了访问权限,仍 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM