microsoftgraph / microsoftgraph/msgraph-sdk-java

Concurrent requests to send emails will generate duplicate emails, and the number does not match.

Ouverte
#2,494 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

status:waiting-for-triage
Langage dominant
Java
Étoiles
444
Forks
154
Merge moyen
18 h 28 min
PR mergées (30 j)
4

Description

Hello!

I used Postman to iterate 160 times to send emails, and actually received 160+ emails. The number of emails received is random and does not match the number, which means duplicate emails are generated.

Image Image Image

@PostMapping("/test") public void SysEmailController() { GraphEmailSender.testInfo(); }

`

import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.microsoft.graph.models.EmailAddress;
import com.microsoft.graph.models.ItemBody;
import com.microsoft.graph.models.Message;
import com.microsoft.graph.models.Recipient;
import com.microsoft.graph.serviceclient.GraphServiceClient;
import com.microsoft.graph.users.item.sendmail.SendMailPostRequestBody;

import java.util.Collections;
import java.util.List;

public class GraphEmailSender {
// 配置参数
private static final String CLIENT_ID = "";
private static final String CLIENT_SECRET = "";
private static final String TENANT_ID = "";
private static final String SENDER_EMAIL = "";
private static final String[] SCOPES = new String[] { "https://graph.microsoft.com/.default" };

private static GraphServiceClient graphClient;


static {
    try {
        final ClientSecretCredential credential = new ClientSecretCredentialBuilder()
                .clientId(CLIENT_ID)
                .tenantId(TENANT_ID)
                .clientSecret(CLIENT_SECRET)
                .build();

        if (null == credential) {
            throw new Exception("Unexpected error");
        }

        graphClient = new GraphServiceClient(credential, SCOPES);
    } catch (Exception e) {
        System.err.println("init GraphServiceClient error: " + e.getMessage());
        e.printStackTrace();
    }
}

public static void testInfo() {
    try {

        Message message = new Message();
        message.setSubject("test mail - Microsoft Graph API");

        ItemBody body = new ItemBody();
        body.setContent("Microsoft Graph API mail。");
        message.setBody(body);

        Recipient recipient = new Recipient();
        EmailAddress emailAddress = new EmailAddress();
        emailAddress.setAddress("");
        recipient.setEmailAddress(emailAddress);
        List<Recipient> recipients = Collections.singletonList(recipient);
        message.setToRecipients(recipients);

        SendMailPostRequestBody sendMailPostRequestBody =
                new SendMailPostRequestBody();
        sendMailPostRequestBody.setMessage(message);

        //
        graphClient.users()
                .byUserId(SENDER_EMAIL)
                .sendMail()
                .post(sendMailPostRequestBody);

        System.out.println("send success!"+Thread.currentThread());

    } catch (Exception e) {
        System.err.println("error: " + e.getMessage());
        e.printStackTrace();
    }
}

}`

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par le point d’entrée fourni @PostMapping("/test") et GraphEmailSender.testInfo(), puis reproduisez les 160 requêtes sendMail concurrentes avec le code client Microsoft Graph indiqué. Comparez le nombre de requêtes et de livraisons afin de déterminer si le comportement se situe dans le SDK ou dans l’application appelante. La tâche est terminée lorsqu’un défaut reproductible du SDK est établi avec un test ciblé, ou lorsque des éléments clairs montrent qu’aucune modification du SDK n’est indiquée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
api
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.