Есть прекрасная библиотека для почты PureSMTP для отправки с вложениями
Можно ещё попробовать использовать функции из имеющейся библиотеки, описание которых есть в справке в разделе Mail.
PureBasic - форум |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Работа с почтой
Есть прекрасная библиотека для почты PureSMTP для отправки с вложениями
Можно ещё попробовать использовать функции из имеющейся библиотеки, описание которых есть в справке в разделе Mail.
Можно ещё попробовать использовать функции из имеющейся библиотеки, описание которых есть в справке в разделе Mail.
Да нее, спасибо, я уже с PureSMTP разобрался. У меня возник другой вопрос. Если тема или текст письма на русском языке то он отображается подозрительными квадратиками или иироглифами. Как эту проблему исправить?
Думаю что нужно передавать текст в unicode кодировке.
Или по копаться в настройках почты.
Или "побаловаться" с функцией PureSMTP_SetContentType
Или "побаловаться" с функцией PureSMTP_SetContentType
Я помотрел в справке, у меня хоть справка и русская но там всё равно всё по английски, я там через переводчик перевёл, но непонял как это мне может пригодится.
А можно поподробней.
Отредактировано Илья (25.03.2011 19:47:23)
Думаю что нужно передавать текст в unicode кодировке
Я сделал всё как в одном из видеоуроков. Но письмо неотправлялось пока в настройках программы стояла галочка "Создать uniсode приложение". А когда я галочку убрал то из за смены кодировки (наверное) иероглифы в письме заменились на вопросительные знаки.
Я помотрел в справке, у меня хоть справка и русская но там всё равно всё по английски, я там через переводчик перевёл, но непонял как это мне может пригодится.А можно поподробней.
Перед отправкой почты, вставь эту строку:
PureSMTP_SetContentType("text/html; charset=windows-1251")
Да спасибо, но это решило проблему с текстом, но с темой всё равно ещё проблемы.
А если тоже самое ("text/html; charset=windows-1251") использовать в аргументе HeaderAddon функции PureSMTP_SendMail?
А если тоже самое ("text/html; charset=windows-1251") использовать в аргументе HeaderAddon функции PureSMTP_SendMail?
Я неочень понял что именно надо сделать. Дописать в строку PureSMTP_SendMail после запятой "("text/html; charset=windows-1251")"? Я попробовал, у меня вместо письма пришло совсем другое.
Надеюсь так понятней
PureSMTP_SendMail(MailTo.s, MailFrom.s, Subject.s, MsgBody.s , Attachments.s , UserName.s , Password.s , "charset=windows-1251")
или так
PureSMTP_SendMail(MailTo.s, MailFrom.s, Subject.s, MsgBody.s , Attachments.s , UserName.s , Password.s , "Content-Type: text/plain; charset=windows-1251")
А вообще, выложи код, которым отправляешь письма.
А вообще, выложи код, которым отправляешь письма.
Вот код:
MySMTPServer.s = "smtp.mail.ru" MySMTPPort.l = 25 ; 587 If PureSMTP_OpenSMTPConnection(MySMTPServer, MySMTPPort) = #PureSMTP_Ok PureSMTP_SetContentType("text/html; charset=windows-1251") Status.l = PureSMTP_SendMail("Vsevolod-s10@mail.ru", "Vsevolod-s10@mail.ru","Тема","Текст письма","C:\test.txt","Vsevolod-s10","7391852s") EndIf
но при таком коде тема отображается квадратиками.
Я зделал как вы говорили:
MySMTPServer.s = "smtp.mail.ru" MySMTPPort.l = 25 ; 587 If PureSMTP_OpenSMTPConnection(MySMTPServer, MySMTPPort) = #PureSMTP_Ok PureSMTP_SetContentType("text/html; charset=windows-1251") Status.l = PureSMTP_SendMail("Vsevolod-s10@mail.ru", "Vsevolod-s10@mail.ru","Тема","Текст письма","C:\test.txt","Vsevolod-s10","7391852s", "charset=windows-1251") EndIf
Но при этом места письма приходит какаято ирунда с отрывками моего письма
Странно, у меня текст и тема нормально отображается на русском.
MySMTPServer.s = "smtp.mail.ru" MySMTPPort.l = 25 ;587 If PureSMTP_OpenSMTPConnection(MySMTPServer, MySMTPPort) = #PureSMTP_Ok PureSMTP_SetContentType("text/html; charset=windows-1251") Status.l = PureSMTP_SendMail("Vsevolod-s10@mail.ru", "Vsevolod-s10@mail.ru","Тема","Текст письма","","Vsevolod-s10","7391852s", "Content-Type: text/html; charset=windows-1251") Debug Status Debug PureSMTP_GetLastServerMessage() EndIf
О, спасибо, ваш пример работает. Я просто подставлял не "Content-Type: text/html; charset=windows-125", а "7391852s", "charset=windows-1251".
Здравствуйте, хочу написать программу, которая может просматривать почту на ящике и смотреть есть ли там непрочитанные письма. Вот как можно отследить что в ящике есть непрочитанные письма?
1. для Outlook
2. для ящика gmail.com, или mail.ru
В простейшем случае:
Server.s = "my.server.de" Port.l = 110 User.s = "gnozal" Pwd.s = "mypass" ; If PurePOP3_OpenPOP3Connection(Server, Port, User, Pwd) = #PurePOP3_Ok Debug "Connected" ; PurePOP3_Trace(#TRUE) Messages = PurePOP3_CountMessages() Debug "В ящике " + Str(Messages) + " писем" PurePOP3_ClosePOP3Connection() Else Debug PurePOP3_GetLastServerMessage() EndIf
Этот код узнает сколько есть писем в папке "Входящие".
Если регулярно проверять количество писем и сравнивать с предыдущим результатом, то можно обнаружить появление новых писем.
Отправка письма функциями PB.
Нужна версия PureBasic не ниже 5.10.
InitNetwork() If CreateMail(0, "Vsevolod-s10@mail.ru", "Hello !") SetMailBody(0, "Hello !" + #CRLF$ + "This is a multi-" + #CRLF$ + "line mail !") AddMailRecipient(0, "Vsevolod-s10@mail.ru", #PB_Mail_To) Result = SendMail(0, "smtp.mail.ru", 587, 0, "Vsevolod-s10", "7391852s") If Progress = #PB_Mail_Finished MessageRequester("Information", "Mail correctly sent !") Else MessageRequester("Error", "Can't sent the mail !") EndIf FreeMail(0) EndIf
Список функций и их описание. http://purebasic.com/documentation/mail/index.html
На русском. http://purebasic.ru/manual.php?id=693&lng=rus
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Работа с почтой