microsoftgraph / microsoftgraph/msgraph-sdk-java
Concurrent requests to send emails will generate duplicate emails, and the number does not match.
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Java
- Estrellas
- 444
- Forks
- 154
- Merge medio
- 18 h 28 min
- PR fusionados (30 d)
- 4
Descripción
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.
@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();
}
}
}`
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con el punto de entrada proporcionado @PostMapping("/test") y GraphEmailSender.testInfo(), y después reproduce las 160 solicitudes sendMail simultáneas usando el código mostrado del cliente de Microsoft Graph. Compara los recuentos de solicitudes y entregas para determinar si el comportamiento está en el SDK o en la aplicación que realiza la llamada. Se considera terminado cuando haya un defecto reproducible del SDK con una prueba enfocada o pruebas claras de que no se requiere ningún cambio en el SDK.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- api
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 25/100