Мне нужно отправить строку текста по электронной почте ... но приемник очень требовательна к его формату: он должен быть простым текстом ASCII.отправка длинной строки текста по электронной почте
Я пытался отправить Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
. К сожалению, моя строка довольно длинная (255 символов) и экранированные кавычки порезов этой строки после 78 символов в новую строку:
BUOYID, 55073, UTCDATE, 24/06/2015, UTCTime, 22: 42.00, STATUS , E0000, ZEROCRS, 201, А = VGHGT, 0.92, TZ, 6.4, MAXWAVE, 3.12, SIGWAVE, 1,63, SIGPERIOD, 9.3, H10,2.2, T10,9.5, M =
Видимо решение лежит при отправке текста в виде вложения ContentDisposition.Inline
(вложение с содержимым внутри тела), что позволит использовать более длинную текстовую строку ... но это не так просто.
Если я сохранить строку в текстовый файл, например так:
string message ="my255CharText";
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"\\shareddata\temp\buoy.txt"))
{
file.WriteLine(message);
}
MailMessage emailMsg = new MailMessage();
emailMsg.To.Add("[email protected]);
emailMsg.Subject = "my Subject";
emailMsg.From = new MailAddress("[email protected]");
emailMsg.BodyEncoding = System.Text.Encoding.ASCII;
emailMsg.IsBodyHtml = false;
Attachment data = new Attachment(@"\\shareddata\temp\buoy.txt", MediaTypeNames.Text.Plain);
emailMsg.Attachments.Add(data);
ContentDisposition dispositon = data.ContentDisposition;
dispositon.Inline=true;
SmtpClient smtp = new SmtpClient("SMTP_SERVER");
smtp.Send(emailMsg);
я продолжать посылать электронную почту с прикрепленным файлом не содержание текстового файла в теле. Если я пытаюсь поставить переменную в качестве вложения:
Attachment data = new Attachment(message, MediaTypeNames.Text.Plain);
я получаю следующее:
PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
Я также попытался изменить путь к локальному диску (c:\temp\buoy.txt
), но файл по-прежнему отправляется как вложение, а не внутри.
EDIT: просьба дать мне понять: я получаю pathTooLongException
ТОЛЬКО, когда я отправляю переменную непосредственно в качестве вложения, а не когда я отправляю из файла.
Ok. Можете ли вы попытаться сохранить «сообщение» в файле, который НЕ является общим файлом? Скажем в 'C: \ files \ buoy.txt'. –
Я изменил путь к c: \ temp \ buoy.txt - файл по-прежнему отправляется как вложение.«Путь слишком длинный» показывает только, когда я пытаюсь отправить его непосредственно из переменной 'Attachment данных = новый Attachment (строка сообщения, ....)' – Yasskier
Отправка форматированных данных по электронной почте всегда сопряжено с проблемами. Помимо проблем с форматированием, также не гарантируется доставка, и она небезопасна (может быть легко подделана или перехвачена). Я бы рекомендовал использовать либо веб-службы, либо SFTP/FTPS для передачи данных. – Dijkgraaf