Как я раскрываюсь, составление / создают почтовое диалоговое окно с помощью почтового клиента пользователя по умолчанию?

Если он не появляется, то проверка отключена. Вы можете включить его в настройках:

Редактор → Инспекции → Java → JUnit → Тест JUnit 4 может быть JUnit 5

Turning on the "JUnit 4 test can be JUnit 5" inspection in Intellij IDEA

Также убедитесь, что JUnit Jupiter находится на вашем пути к классам.

6
задан Gishu 16 January 2009 в 12:20
поделиться

6 ответов

Можно ли создать объект процесса и иметь ли его вызов "mailto:user@example.com? subject=My+New+Subject". Это заставит систему действовать на mailto со своим обработчиком по умолчанию, однако, в то время как можно установить предметы и такой этот дескриптор привычки, прикрепляющий вложение. Я свободно признаю, что я не совсем уверен, как Вы пошли бы о принуждении вложения, не пишущий некоторый почтовый плагин.

Код процесса:

System.Diagnostics.Process.Start("mailto:user@example.com?subject=My+New+Subject");
10
ответ дан 8 December 2019 в 16:12
поделиться

Это - вероятно, не самый эффективный или изящный путь, но окружение "mailto": ссылка сделает то, что Вы хотите, я думаю.

Править: Извините, не учтенный очень важное "нет".

2
ответ дан 8 December 2019 в 16:12
поделиться

Мог это быть, что Вы использовали mailto: протокол?

Почти все из того, что Вы выделяете, может быть сделано, но я совершенно уверен, который Вы наклоняете, делают вложения.

Microsoft MailTo Documentation

1
ответ дан 8 December 2019 в 16:12
поделиться

Так как mailto не поддерживает вложения, и так как MAPI не поддерживается в рамках управляемого кода, Ваш лучший выбор состоит в том, чтобы записать (или сделайте, чтобы кто-то записал), маленькая неуправляемая программа для вызывания функций MAPI, которые можно вызвать с параметрами командной строки. Жалость та.NET не имеет более чистой альтернативы.

См. также: MAPI и события управляемого кода?

2
ответ дан 8 December 2019 в 16:12
поделиться

Запуск процесса с mailto: аргументами является самый простой подход. Все же это не позволяет ничего более или менее сложного.

Немного отличающийся подход включает почтовый шаблон создания и затем питание его к Процессу. Запустите:

var client = new SmtpClient();

var folder = new RandomTempFolder();
client.DeliveryMethod = 
  SmtpDeliveryMethod.SpecifiedPickupDirectory;

client.PickupDirectoryLocation = folder.FullName;

var message = new MailMessage("to@no.net",
  "from@no.net", "Subject","Hi and bye");

// add attachments here, if needed
// need this to open email in Edit mode in OE
message.Headers.Add("X-Unsent", "1");

client.Send(message);

var files = folder.GetFiles();

Process.Start(files[0].FullName);

Сценарии для обработчика электронной почты по умолчанию:

  • Outlook Express открывается
  • Windows: Outlook - не обрабатывает по умолчанию, Outlook Express называют вместо этого
  • Windows: The Bat! - сообщение открыто для просмотра, Shift-F6 хита, и Войдите для отправки

Я также протестировал с Моно, и это работало более или менее.

Дополнительные детали доступны в этом сообщении: информационная интеграция - самый простой подход для шаблонных электронных писем

PS: в конце я пошел для немного более сложного сценария:

  • Определенный интерфейс IEmailIntegraton
  • Код выше вошел в DefaultEmailIntegration
  • Добавленные реализации для OutlookEmailIntegration (автоматизация) и theBat! почтовая интеграция (использующий их шаблонный формат).
  • Разрешенные пользователи SmartClient для выбора их сценария из выпадающего (альтернативно это, возможно, было реализовано как "Проверка система для обработчика электронной почты по умолчанию и решать автоматически"),
1
ответ дан 8 December 2019 в 16:12
поделиться

Вы делаете предположение, что им установят почтовый клиент, конечно.

Вариант, который я выбрал в прошлом (в корпоративной среде, где у всех есть по крайней мере одна версия установленного Outlook) состоял в том, чтобы использовать Outlook interop - только необходимо сослаться на самую раннюю версию, которую необходимо поддерживать.

Вы могли посмотреть на P/Invoking MAPISendDocuments (которого я буду стараться избегать, лично), или другая опция состояла бы в том, чтобы создать Ваше собственное, "составляют" форму и используют объекты от Системы. Сеть. Почтовое пространство имен.

0
ответ дан 8 December 2019 в 16:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: