Отправка писем с помощью AWS SDK для .NET Core
В этом руководстве вы научитесь отправлять электронные письма через Yandex Cloud Postbox с использованием AWS SDK для .NET Core
Чтобы начать отправлять электронные письма:
- Подготовьте облако к работе.
- Настройте директорию для аутентификационных данных.
- Создайте и запустите приложение.
- Проверьте результат.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входят:
- плата за использование Yandex Cloud Postbox (см. тарифы Yandex Cloud Postbox);
- плата за публичные DNS-запросы и зоны DNS, если вы создаете ресурсную запись в Cloud DNS (см. тарифы Cloud DNS).
Подготовьте ресурсы
- Создайте сервисный аккаунт.
- Назначьте сервисному аккаунту роль
postbox.sender
. - Создайте статический ключ доступа для сервисного аккаунта. Сохраните идентификатор и секретный ключ.
- Создайте адрес.
- Пройдите проверку владения доменом.
Настройте директорию для аутентификационных данных
-
Создайте директорию для хранения аутентификационных данных и перейдите в нее:
Для macOS и Linux:
mkdir ~/.aws/
Для Windows:
mkdir C:\Users\<имя_пользователя>\.aws\
-
В директории
.aws
создайте файлcredentials
и скопируйте в него аутентификационные данные, полученные при создании статического ключа доступа:[default] aws_access_key_id = <идентификатор_статического_ключа> aws_secret_access_key = <секретный_ключ>
-
Создайте файл
config
с параметрами региона по умолчанию и скопируйте в него следующую информацию:[default] region = ru-central1 endpoint_url = https://postbox.cloud.yandex.net
Использование переменных окружения
AWS SDK по умолчанию использует аутентификационные данные из переменных окружения, если они заданы. Эти переменные имеют приоритет над аутентификационными данными, которые указаны в файле .aws/credentials
.
Поддерживаются следующие переменные окружения:
AWS_ACCESS_KEY_ID
— идентификатор статического ключа;AWS_SECRET_ACCESS_KEY
— секретный ключ.
Чтобы задать переменные окружения, выполните следующие действия в зависимости от вашей операционной системы:
В терминале выполните команду:
export AWS_ACCESS_KEY_ID=<идентификатор_статического_ключа>
export AWS_SECRET_ACCESS_KEY=<секретный_ключ>
В PowerShell выполните команду:
$Env:AWS_ACCESS_KEY_ID=<идентификатор_статического_ключа>
$Env:AWS_SECRET_ACCESS_KEY=<секретный_ключ>
Создайте и запустите приложение
-
Получите код приложения:
РепозиторийВручную-
Склонируйте репозиторий:
git clone https://github.com/yandex-cloud-examples/yc-postbox-examples
- Перейдите в папку в склонированном репозитории
csharp/Postbox/Postbox/
. -
В файле
Program.cs
укажите данные:-
В поле
ToAddresses
— электронную почту получателя. Например:receiver@yourdomain.com
. Далее для проверки вам потребуется доступ к этой электронной почте. -
В поле
FromEmailAddress
— электронную почту отправителя.Домен электронной почты отправителя должен совпадать с указанным в адресе Yandex Cloud Postbox, созданном при подготовке к работе. Например, если домен, на который вы подтвердили владение, —
yourdomain.com
, можно указать электронную почтуnoreply@yourdomain.com
илиadmin@yourdomain.com
, аuser@mail.yourdomain.com
— нельзя.
-
-
Создайте папку
postbox-csharp
и перейдите в нее. -
Создайте файл
Program.cs
и вставьте в него код:using Amazon.Runtime; using Amazon.SimpleEmailV2; using Amazon.SimpleEmailV2.Model; var client = new AmazonSimpleEmailServiceV2Client( new AmazonSimpleEmailServiceV2Config { ServiceURL = "https://postbox.cloud.yandex.net", SignatureMethod = SigningAlgorithm.HmacSHA256, SignatureVersion = "4", AuthenticationRegion = "ru-central1", } ); try { var response = await client.SendEmailAsync( new SendEmailRequest { Destination = new Destination { ToAddresses = ["<адрес_получателя>"] }, Content = new EmailContent { Simple = new Message { Body = new Body { Text = new Content { Charset = "UTF-8", Data = "Hello, world!" } }, Subject = new Content { Charset = "UTF-8", Data = "Test email" } } }, FromEmailAddress = "<адрес_отправителя>" }); Console.Write(response.MessageId); } catch (Exception ex) { // Логирование исключений в формате JSON Console.WriteLine(ex); }
-
В файле
Program.cs
укажите данные:-
В поле
ToAddresses
— электронную почту получателя. Например:receiver@yourdomain.com
. Далее для проверки вам потребуется доступ к этой электронной почте. -
В поле
FromEmailAddress
— электронную почту отправителя.Домен электронной почты отправителя должен совпадать с указанным в адресе Yandex Cloud Postbox, созданном при подготовке к работе. Например, если домен, на который вы подтвердили владение, —
yourdomain.com
, можно указать электронную почтуnoreply@yourdomain.com
илиadmin@yourdomain.com
, аuser@mail.yourdomain.com
— нельзя.
-
-
Создайте файл
Postbox.csproj
и вставьте в него код:<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <PackageReference Include="AWSSDK.SimpleEmailV2" Version="3.7.408.17" /> </ItemGroup> </Project>
-
Создайте файл
Postbox.sln
и вставьте в него код:Microsoft Visual Studio Solution File, Format Version 12.00 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Postbox", "Postbox\Postbox.csproj", "{51272D55-8BA2-4072-9445-889E627E605D}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {51272D55-8BA2-4072-9445-889E627E605D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {51272D55-8BA2-4072-9445-889E627E605D}.Debug|Any CPU.Build.0 = Debug|Any CPU {51272D55-8BA2-4072-9445-889E627E605D}.Release|Any CPU.ActiveCfg = Release|Any CPU {51272D55-8BA2-4072-9445-889E627E605D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal
-
-
Запустите приложение:
dotnet run
Результат:
DB42OLB6KLNJ.7VDE********@ingress2-klg
Проверьте результат
Убедитесь, что на адрес получателя, заданный в файле Program.cs
в поле ToAddresses
, пришло письмо с указанными параметрами.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы: