Skip to content

Commit 039a1f1

Browse files
ddouglas-msftyogeshmoCopilotkagbakpemsrnagar
authored
Azure.Communication.Email 1.1.0 - 2025-09-01 (#46773)
* Updating communication-email sdk to version 1.1.0 * update change log * update version to 1.1.0 * update change log * revert breaking change * update tests * remove contentInBase64 * improve tests * refresh tests * version update * update changelog * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * set version back to 1.1.0 * remove rehydration poller * remove jackson references * revert wierd api updates from autorest * update tests * Update eng/versioning/version_client.txt Co-authored-by: Srikanta <51379715+srnagar@users.noreply.github.com> * added convenience method to check for null * fix linting error * do conversion in customization layer * update to throw an exception when content is null * update release date * run mvn spotless:apply --------- Co-authored-by: yogeshmo <yogeshmo@umich.edu> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Komivi Agbakpem <kevin.agbakpem@gmail.com> Co-authored-by: Srikanta <51379715+srnagar@users.noreply.github.com>
1 parent 0b6ac24 commit 039a1f1

18 files changed

Lines changed: 59 additions & 173 deletions

File tree

eng/versioning/version_client.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ com.azure:azure-communication-callingserver;1.0.0-beta.4;1.0.0-beta.5
7575
com.azure:azure-communication-chat;1.6.3;1.7.0-beta.1
7676
com.azure:azure-communication-common;1.4.3;1.5.0-beta.1
7777
com.azure:azure-communication-common-perf;1.0.0-beta.1;1.0.0-beta.1
78-
com.azure:azure-communication-email;1.0.25;1.1.0-beta.2
78+
com.azure:azure-communication-email;1.0.25;1.1.0
7979
com.azure:azure-communication-identity;1.6.8;1.7.0-beta.1
8080
com.azure:azure-communication-jobrouter;1.1.16;2.0.0-beta.1
8181
com.azure:azure-communication-messages;1.1.7;1.2.0-beta.2

sdk/communication/azure-communication-email/CHANGELOG.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
# Release History
22

3-
## 1.1.0-beta.2 (Unreleased)
3+
## 1.1.0 (2025-10-08)
44

55
### Features Added
66

7-
### Breaking Changes
7+
- Consumers can now provide a value for the `ContentId` property when sending emails with attachments.
8+
This allows consumers to reference attachments in the email body using the `cid` scheme. The `ContentId` property can be set on the `EmailAttachment` object.
9+
10+
### Bug fixes
811

9-
### Bugs Fixed
12+
- Fixed change introduced in preview versions that required EmailAttachment Content to be pre-encoded in base64. Content should now again be constructed using raw binary data.
1013

1114
## 1.0.25 (2025-09-25)
1215

sdk/communication/azure-communication-email/README.md

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -168,27 +168,6 @@ PollResponse<EmailSendResult> response = poller.waitForCompletion();
168168
System.out.println("Operation Id: " + response.getValue().getId());
169169
```
170170

171-
### Create a Poller from an Existing Operation ID
172-
173-
If you have an operation ID from a previous send email request, you can create a poller to check the status of that operation at a later time.
174-
175-
```java readme-sample-beginSendFromExistingOperationId
176-
EmailMessage message = new EmailMessage()
177-
.setSenderAddress("<sender-email-address>")
178-
.setToRecipients("<recipient-email-address>")
179-
.setSubject("test subject")
180-
.setBodyPlainText("test message");
181-
182-
SyncPoller<EmailSendResult, EmailSendResult> poller = emailClient.beginSend(message);
183-
PollResponse<EmailSendResult> response = poller.waitForCompletion();
184-
String operationId = response.getValue().getId();
185-
186-
SyncPoller<EmailSendResult, EmailSendResult> poller2 = emailClient.beginSend(operationId);
187-
PollResponse<EmailSendResult> response2 = poller2.waitForCompletion();
188-
189-
System.out.println("Status: " + response2.getValue().getStatus());
190-
```
191-
192171
### Send Email with Attachments
193172

194173
Azure Communication Services support sending email with attachments.

sdk/communication/azure-communication-email/assets.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"AssetsRepo": "Azure/azure-sdk-assets",
33
"AssetsRepoPrefixPath": "java",
44
"TagPrefix": "java/communication/azure-communication-email",
5-
"Tag": "java/communication/azure-communication-email_b0385bf4e4"
5+
"Tag": "java/communication/azure-communication-email_bbe924c0d0"
66
}

sdk/communication/azure-communication-email/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<groupId>com.azure</groupId>
1414
<artifactId>azure-communication-email</artifactId>
15-
<version>1.1.0-beta.2</version> <!-- {x-version-update;com.azure:azure-communication-email;current} -->
15+
<version>1.1.0</version> <!-- {x-version-update;com.azure:azure-communication-email;current} -->
1616
<packaging>jar</packaging>
1717

1818
<name>Microsoft Azure Communications SDK for Email</name>

sdk/communication/azure-communication-email/src/main/java/com/azure/communication/email/EmailAsyncClient.java

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@
1515
import com.azure.core.annotation.ReturnType;
1616
import com.azure.core.annotation.ServiceClient;
1717
import com.azure.core.annotation.ServiceMethod;
18+
import com.azure.core.util.BinaryData;
1819
import com.azure.core.util.Context;
20+
import com.azure.core.util.logging.ClientLogger;
1921
import com.azure.core.util.polling.DefaultPollingStrategy;
2022
import com.azure.core.util.polling.PollerFlux;
2123
import com.azure.core.util.serializer.TypeReference;
22-
import com.azure.core.util.logging.ClientLogger;
23-
2424
import java.time.Duration;
2525
import java.util.ArrayList;
26+
import java.util.Base64;
2627
import java.util.List;
2728
import java.util.Objects;
2829

@@ -92,7 +93,7 @@ PollerFlux<EmailSendResult, EmailSendResult> beginSend(EmailMessage message, Con
9293
com.azure.communication.email.implementation.models.EmailAttachment attachmentImpl = null;
9394

9495
attachmentImpl = new com.azure.communication.email.implementation.models.EmailAttachment(
95-
attachment.getName(), attachment.getContentType(), attachment.getContentInBase64());
96+
attachment.getName(), attachment.getContentType(), formatToBase64(attachment.getContent()));
9697

9798
String contentId = attachment.getContentId();
9899

@@ -120,25 +121,6 @@ PollerFlux<EmailSendResult, EmailSendResult> beginSend(EmailMessage message, Con
120121
TypeReference.createInstance(EmailSendResult.class), TypeReference.createInstance(EmailSendResult.class));
121122
}
122123

123-
/**
124-
* Creates a poller from an existing operation id.
125-
*
126-
* @param operationId The operation id of a previous send email operation.
127-
* @return A poller that can be used to poll for the status of the email.
128-
*/
129-
@ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
130-
public PollerFlux<EmailSendResult, EmailSendResult> beginSend(String operationId) {
131-
return beginSend(operationId, null);
132-
}
133-
134-
PollerFlux<EmailSendResult, EmailSendResult> beginSend(String operationId, Context context) {
135-
return PollerFlux.create(Duration.ofSeconds(1),
136-
() -> emailServiceClient.getSendResultWithResponseAsync(operationId),
137-
new DefaultPollingStrategy<>(this.serviceClient.getHttpPipeline(),
138-
"{endpoint}".replace("{endpoint}", this.serviceClient.getEndpoint()), null, context),
139-
TypeReference.createInstance(EmailSendResult.class), TypeReference.createInstance(EmailSendResult.class));
140-
}
141-
142124
void verifyRecipientEmailAddressesNotNull(List<EmailAddress> recipients) {
143125
if (recipients != null) {
144126
for (EmailAddress recipient : recipients) {
@@ -147,4 +129,14 @@ void verifyRecipientEmailAddressesNotNull(List<EmailAddress> recipients) {
147129
}
148130
}
149131
}
132+
133+
private static BinaryData formatToBase64(BinaryData content) {
134+
if (content == null) {
135+
throw LOGGER.logExceptionAsError(new NullPointerException("'content' cannot be null."));
136+
}
137+
138+
String encodedContent = Base64.getEncoder().encodeToString(content.toBytes());
139+
140+
return BinaryData.fromString(encodedContent);
141+
}
150142
}

sdk/communication/azure-communication-email/src/main/java/com/azure/communication/email/EmailClient.java

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -53,27 +53,4 @@ public SyncPoller<EmailSendResult, EmailSendResult> beginSend(EmailMessage messa
5353
public SyncPoller<EmailSendResult, EmailSendResult> beginSend(EmailMessage message, Context context) {
5454
return client.beginSend(message, context).getSyncPoller();
5555
}
56-
57-
/**
58-
* Creates a poller from an existing operation id.
59-
*
60-
* @param operationId The operation id of a previous send email operation.
61-
* @return A poller that can be used to poll for the status of the email.
62-
*/
63-
@ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
64-
public SyncPoller<EmailSendResult, EmailSendResult> beginSend(String operationId) {
65-
return beginSend(operationId, Context.NONE);
66-
}
67-
68-
/**
69-
* Creates a poller from an existing operation id.
70-
*
71-
* @param operationId The operation id of a previous send email operation.
72-
* @param context The context to associate with this operation.
73-
* @return A poller that can be used to poll for the status of the email.
74-
*/
75-
@ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
76-
public SyncPoller<EmailSendResult, EmailSendResult> beginSend(String operationId, Context context) {
77-
return client.beginSend(operationId, context).getSyncPoller();
78-
}
7956
}

sdk/communication/azure-communication-email/src/main/java/com/azure/communication/email/EmailServiceVersion.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ public enum EmailServiceVersion implements ServiceVersion {
1111
/** Enum value 2023-03-31. */
1212
V2023_03_31("2023-03-31"),
1313

14-
/** Enum value 2024-07-01-preview. */
15-
V2024_07_01_Preview("2024-07-01-preview");
14+
/** Enum value 2025-09-01. */
15+
V2025_09_01("2025-09-01");
1616

1717
private final String version;
1818

@@ -31,6 +31,6 @@ public String getVersion() {
3131
* @return The latest {@link EmailServiceVersion}.
3232
*/
3333
public static EmailServiceVersion getLatest() {
34-
return V2024_07_01_Preview;
34+
return V2025_09_01;
3535
}
3636
}

sdk/communication/azure-communication-email/src/main/java/com/azure/communication/email/implementation/AzureCommunicationEmailServiceImplBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ public AzureCommunicationEmailServiceImplBuilder retryPolicy(RetryPolicy retryPo
270270
public AzureCommunicationEmailServiceImpl buildClient() {
271271
this.validateClient();
272272
HttpPipeline localPipeline = (pipeline != null) ? pipeline : createHttpPipeline();
273-
String localApiVersion = (apiVersion != null) ? apiVersion : "2024-07-01-preview";
273+
String localApiVersion = (apiVersion != null) ? apiVersion : "2025-09-01";
274274
SerializerAdapter localSerializerAdapter
275275
= (serializerAdapter != null) ? serializerAdapter : JacksonAdapter.createDefaultSerializerAdapter();
276276
AzureCommunicationEmailServiceImpl client = new AzureCommunicationEmailServiceImpl(localPipeline,

sdk/communication/azure-communication-email/src/main/java/com/azure/communication/email/implementation/models/package-info.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,5 @@
22
// Licensed under the MIT License.
33
// Code generated by Microsoft (R) AutoRest Code Generator.
44

5-
/**
6-
* Package containing the data models for AzureCommunicationEmailService.
7-
* Azure Communication Email Service.
8-
*/
5+
/** Package containing the data models for AzureCommunicationEmailService. Azure Communication Email Service. */
96
package com.azure.communication.email.implementation.models;

0 commit comments

Comments
 (0)