Мы пытаемся подписать сообщение электронной почты с помощью DKIM. Электронное письмо успешно отправлено получателю через API Gmail; однако он не проходит проверку DKIM, когда мы подписываем его с помощью домена с допустимой настройкой DKIM.Домен имеет действительную настройку DKIM (https://mxtoolbox.com/SuperTool.aspx?ac ... im%3aunsub. eeunsub.com%3as1&run=toolpage) и проходит DKIM, когда мы отправляем электронные письма с помощью других поставщиков услуг электронной почты, таких как AWS SES (добавленный снимок экрана, см. ниже).
private static void SendEmail()
{
ClientSecrets clientSecrets = new ClientSecrets
{
ClientId = ClientId,
ClientSecret = ClientSecret
};
TokenResponse token = new TokenResponse
{
AccessToken = "",
RefreshToken = _espApiEndpoint.RefreshToken
};
IAuthorizationCodeFlow flow =
new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = clientSecrets,
Scopes = new string[] { GmailService.Scope.GmailSend }
});
UserCredential credential = new UserCredential(flow, "me", token);
BaseClientService.Initializer intializer = new BaseClientService.Initializer
{
ApplicationName = "GmailEspApiClient",
HttpClientInitializer = credential
};
var gmail = new GmailService(intializer);
string message = @"From: Xxx
Date: Thu, 14 Mar 2024 09:59:20 -0700
Subject: Gmail EE est
Message-Id:
Reply-To: xxx
To: Dan
X-EE-RunId: xxx
List-Unsubscribe: ,
List-Unsubscribe-Post: List-Unsubscribe=One-Click
X-Test-Header: TestHeader
X-Testing: Testee
MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
Hello from Gmail[/b]
";
using MemoryStream memoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(message));
MimeMessage mimeMessage = await MimeMessage.LoadAsync(memoryStream);
string privateKey = ""; // Your private key
byte[] byteArray = Encoding.UTF8.GetBytes(privateKey);
using MemoryStream memory = new MemoryStream(byteArray);
string domain = "xxx"; // Your Domain
string selector = "xxx"; // Selector
DkimSigner signer = new DkimSigner(memory, domain, selector)
{
HeaderCanonicalizationAlgorithm = DkimCanonicalizationAlgorithm.Simple,
BodyCanonicalizationAlgorithm = DkimCanonicalizationAlgorithm.Simple,
QueryMethod = "dns/txt",
};
mimeMessage.Prepare(EncodingConstraint.SevenBit);
signer.Sign(mimeMessage, new HeaderId[] { HeaderId.From });
Message finalmessage = new Message();
finalmessage.Raw = Base64UrlEncode(mimeMessage.ToString());
var result = await gmail.Users.Messages.Send(finalmessage, "me").ExecuteAsync();
}
private static string Base64UrlEncode(string input)
{
var inputBytes = System.Text.Encoding.UTF8.GetBytes(input);;
// Special "url-safe" base64 encode.
return Convert.ToBase64String(inputBytes)
.Replace('+', '-')
.Replace('/', '_')
.Replace("=", "");
}
Скриншоты публикуются как для Google, так и для Aws SES. Обратите внимание, что Google возвращает dkim=neutral (хэш тела не проверен).
Сообщите нам свое мнение.
Проблема ранее открыт с помощью Google https://github.com/googleapis/google-ap ... ssues/2701
Мы пытаемся подписать сообщение электронной почты с помощью DKIM. Электронное письмо успешно отправлено получателю через API Gmail; однако он не проходит проверку DKIM, когда мы подписываем его с помощью домена с допустимой настройкой DKIM.[b]Домен имеет действительную настройку DKIM (https://mxtoolbox.com/SuperTool.aspx?action=dkim%3aunsub. eeunsub.com%3as1&run=toolpage) и проходит DKIM, когда мы отправляем электронные письма с помощью других поставщиков услуг электронной почты, таких как AWS SES (добавленный снимок экрана, см. ниже). [code]private static void SendEmail() { ClientSecrets clientSecrets = new ClientSecrets { ClientId = ClientId, ClientSecret = ClientSecret };
signer.Sign(mimeMessage, new HeaderId[] { HeaderId.From });
Message finalmessage = new Message(); finalmessage.Raw = Base64UrlEncode(mimeMessage.ToString()); var result = await gmail.Users.Messages.Send(finalmessage, "me").ExecuteAsync(); }
private static string Base64UrlEncode(string input) { var inputBytes = System.Text.Encoding.UTF8.GetBytes(input);; // Special "url-safe" base64 encode. return Convert.ToBase64String(inputBytes) .Replace('+', '-') .Replace('/', '_') .Replace("=", ""); } [/code] Скриншоты публикуются как для Google, так и для Aws SES. Обратите внимание, что Google возвращает dkim=neutral (хэш тела не проверен). Сообщите нам свое мнение. Проблема ранее открыт с помощью Google https://github.com/googleapis/google-api-dotnet-client/issues/2701
Я написал создатель подписи DKIM для отправки электронных писем. Есть записи в днс. С помощью электронного письма Yahoo проверили правильность алгоритма хеширования. Код подписи Java верен для других приложений. Но Yahoo продолжает отвергать DKIM....
Ошибка Yahoo DKIM
У меня есть создатель подписей Java DKIM для электронных писем. Правильные записи есть в днс. Примеры писем от Yahoo доказали правильность алгоритма хеширования. Код подписи Java оказался корректным в других приложениях, таких как...
Надеюсь, кто-нибудь сможет мне помочь.
Я пытаюсь загрузить вложения к электронному письму, в котором отчеты DMARC поступают из домена, я загружаю их с помощью API Gmail. Согласно документации API, файл загружается через строка в кодировке base64,...
Описание: я обнаружил ошибку 504 при попытке отправить электронное письмо с вложением с использованием SMTP через SSL (порт 465). Однако при отправке электронных писем без вложений или использовании настройки локального хоста ошибок не возникло. Я...