Emailing an attachment in C# Windows application

Refresh

November 2018

Views

1.4k time

3

We are developing a .Net Windows application in C# for commercial distribution.

Objective

I want to add a function to allow the user to email a file to any email recipient from within the application without needing an email client on their PC, just an internet connection. The email they send needs to appear that it has come from them (i.e. their email address is in the FROM/REPLYTO field) so that the recipient can identify where the email has come from and they can reply to it.

Current Approach

I was intending to use the MailMessage class in System.Net.Mail, but it requires an SMTP server to send the email. The problem with that is, i dont want the user to have to configure anything to send emails from our application - i want it set up by us. In other words, i want to define what SMTP server to send the email from and hardcode it in the application.

I have tried to use Gmail as the SMTP server, however one major drawback - Gmail automatically rewrites the "From" line of any e-mail you send via their SMTP gateway to your Gmail address, so when we tested this, even though in the MailMessage code we set the FROM property to [email protected], when the email was received, the From field displayed [email protected]

Questions

  1. If this software application is going to be distributed to many users in different network environments, is this method the best to use? If so, is there a free/public SMTP server i can use for our application to achieve this that will allow the end-user to define the FROM and REPLYTO fields?

  2. I have been told that not all ISPs / organisations will permit arbitrary SMTP connections and/or if the sender implements an SPF record the message may be rejected. Does that mean my intended approach may not always work?

  3. Is there any other common or more stable method i could use to achieve my original objective?

3 answers

1

Я не думаю, что вы можете гарантировать любой сервер SMTP всегда будет доступен. SMTP, например, в Gmail заблокирован в моем офисе.

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

1

1) Я был бы удивлен, если вы нашли общий сервер SMTP, чтобы сделать это, как это было бы просто использовать сильно как реле спама.

2) Много жилых МНП сделать блок SMTP трафика покинуть свою сеть. Тем не менее, они делают это путем блокирования порта 25, так что если вы размещаете свой собственный сервер SMTP на другой порт он не будет заблокирован, за исключением самых крайних случаев.

3) смотри ниже

Я вижу две вещи, которые Вы должны адрес:

Получение сообщения от отправителя к вам
внушению Конрада с помощью веб - сервиса является хорошей , поскольку это дает вам больший контроль над транспортировкой сообщения для вас. Вы можете осуществлять любые проверки подлинности вы считаете необходимым , чтобы убедиться , что человек , посылающий сообщение является законным. Вы можете использовать SMTP для отправки сообщений через почтовый сервер , расположенный на вас, но нужно будет сосредоточиться на зная , кто благополучно разрешить послать и кто не так что вы не до конца , как реле спама.

Отправка сообщения от вас получателю
Вы можете отправить сообщение конечному получателю с помощью SMTP их почтового сервера. Я хотел бы предложить отправив письмо с от как приложения (например: [email protected]) и определить адрес для ответа для исходного отправителя. Если попытаться использовать свой адрес в с, вы получите больше спама отбраковки.

Если я понял ваше описание, сообщения будут направляются только к другим пользователям приложения?
Если да, то вы могли бы взять на себя маршрут веб - службы на обеих частях связи. Отправитель доставляет сообщение на централизованный сервер в течение вызова веб - службы, когда пользователь получатель открывает программу, он проверяет с вашим сервером , чтобы видеть, есть ли какие - либо сообщения , ожидающие их.

EDIT:
Да, часть на электронную почту назначения, я мог читать его в обоих направлениях, думаю , я склонялся к неправильному.

Вы должны будете доставлять сообщения в конце концов, через SMTP, я до сих пор предлагаю использовать свой собственный из и поставить отправитель в ответе-к, если они не являются корпоративными клиентами, которые вы можете получить, чтобы добавить сервер SMTP их SPF записи.

Кроме того , исследовать конкретные основные цели почты , как Yahoo! и GMail для того, как взаимодействовать с ними , такими как: http://mail.google.com/support/bin/answer.py?hl=en&answer=81126
http://help.yahoo.com/l/us/yahoo/ почта / почтмейстер / почтмейстер-15.html
http://help.yahoo.com/l/us/yahoo/mail/postmaster/bulkv2.html

0

Я использовал что - то похожее на это , чтобы отправить электронную почту без необходимости полагаться на SMTP. YMMV