Рейтинг:
0
Adrian4263
Не нужно использовать стороннюю библиотеку?Можете показать мне простой пример? Или изменить мой код выше? Потому что ссылка,которую вы дали, я не так много понимаю.Спасибо
Thomas Daniels
Я добавил пример.
Adrian4263
Ладно,у меня есть вопрос.Какую серверную часть я должен написать?Протокол SMTP?
Thomas Daniels
Да, в вашем случае ... smtp.gmail.com"
Adrian4263
Ладно. сообщение.From = New MailAddress(eid) <<The meail address is write my e-mail address is it?И SMTP.Учетные данные = новый а networkcredential (ИД, пасс)&ЛТ;&ЛТ; удостоверение N пароль заменить а networkcredential или заменить на кронштейн?
Thomas Daniels
Глутамат натрия.From address-это адрес, с которого будет отправлено письмо: Ваш адрес.
Протокол SMTP.Учетные данные = новый а networkcredential(ИД, пасс) - это не сторонние версии:
<small>
Smtp.UserName = eid '"ab@mail.com"
Smtp.Password = pass '"123"
</small>
Adrian4263
Это означает, что мне не нужно писать какой-либо адрес в msg.С адреса,потому что те, кому я хочу отправить почту, считываются из базы данных.
Протокол SMTP.Учетные данные = новый а networkcredential(ИД, пасс),поэтому я хочу, чтобы заменить мой адрес электронной почты в ИД и пасс?
Thomas Daniels
Что именно вы имеете в виду?
Вы всегда должны указывать пароль адреса электронной почты, с которого вы отправляете электронное письмо.
Adrian4263
Да,я это знаю.Я имею в виду, где я должен написать адрес электронной почты отправителя и пароль.
Thomas Daniels
Адрес электронной почты в поле <small>eid</small>
переменная и пароль в поле <small>pass</small>
переменная.
Adrian4263
Ладно,я понял.Я иду попробовать и посмотреть,я думаю, что это полезно, и большое вам спасибо :)
Thomas Daniels
Всегда пожалуйста!
Adrian4263
adrian_leong90@hotmail.com это моя электронная почта, не могли бы вы отправить ее мне,у меня есть к вам один вопрос.Спасибо
Thomas Daniels
Почему я не могу пригласить тебя сюда?
Adrian4263
Потому что код довольно длинный. Разве это разумно?
Thomas Daniels
Вы можете задать его здесь, даже если код длинный. Но всегда предоставляйте самый короткий фрагмент, насколько это возможно.
Adrian4263
Роджер,во-первых, мой код кнопки электронной почты получил 2 части,часть,которую я показал выше, которая является частью 2, только что я попробовал код получил ошибку, так что я покажу вам весь код кнопки электронной почты.Надеюсь, вы поможете мне решить эту ошибку.
Thomas Daniels
Если вы покажете мне код, я попытаюсь найти ошибку.
Adrian4263
Ниже приведен мой код кнопки электронной почты:
Private Sub Button1_Click(бывал отправитель как система.Объект, бывал е как система.EventArgs) Обрабатывает Button1.Щелчок
Dim dsd как новый набор данных
Dim sql As String = "Select * from email"
Dim cmd как новая команда SqlCommand(sql, connect)
дадаптер.Команды selectcommand = ЦМД
ДСД.Сброс()
дадаптер.Заполнение(dsd)
Если ДСД.Таблицы(0).Строки.Тогда считайте > 0
Тусклый тип = dsd.Таблицы(0).строки(0).элемент("тип")
Дим ИД = ЗПР.Таблицы(0).строки(0).элемент("id").Метод toString.Отделка
Дим пройти = ЗПР.Таблицы(0).строки(0).элемент("проход").Метод toString.Отделка
Тусклый порт = dsd.Таблицы(0).строки(0).элемент("порт").Метод toString.Отделка
Dim server = dsd.Таблицы(0).строки(0).элемент("сервер").Метод toString.Отделка
MsgBox("начните отправлять электронную почту ...")
Для i = 0 - dSet.Tables(0).Rows.Количество - 1
Dim email As String = dSet.Tables(0).Rows(i).Пункт("электронная почта").Метод toString.Отделка
Если электронная почта < & gt; "" То
Dim id As String = dSet.Tables(0).Rows(i).Пункт("эмпид").Метод toString
Dim CrExportOptions Как Новые Экспортные Функции
Dim CrDiskFileDestinationOptions Как Новые DiskFileDestinationOptions()
Dim crformatTypeOptions как новые PdfRtfWordFormatOptions()
CrDiskFileDestinationOptions.DiskFileName = _
Конфигурационный менеджер.Параметр appsettings("pypath")
CrExportOptions = obj-файлы.ExportOptions
crformatTypeOptions.FirstPageNumber = i
crformatTypeOptions.LastPageNumber = i
crformatTypeOptions.UsePageRange = True
С CrExportOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
.DestinationOptions = CrDiskFileDestinationOptions
.FormatOptions = crformatTypeOptions
Конец С
параметр obj.Экспорт()
'_________________________________________________________________________________
Dim Smtp Как Новый EASendMailObjLib.Mail
Smtp.LicenseCode = "TryIt"
протокол SMTP.FromAddr = eid '"ab@mail.com"
Протокол SMTP.AddRecipientEx(по электронной почте, 0)
Протокол SMTP.Тема = "аавв"
Протокол SMTP.BodyText = "аавв"
"Добавить вложение с локального диска
Если Smtp.AddAttachment(pdfFile) <> 0 затем
&Ампер функцию MsgBox("не удалось добавить вложение с ошибкой:"; протокола SMTP.GetLastErrDescription())
Конец, Если
Smtp.ServerAddr = сервер '"smtp.gmail.com"
Протокол SMTP.ServerPort = порт 465
"автоматическое обнаружение SSL/TLS
Протокол SMTP.SSL_init()
Протокол SMTP.Имя пользователя = ИД '"ab@mail.com"
Smtp.Password = pass '"123"
Если Smtp.SendMail() = 0, То
"MsgBox("письмо было отправлено успешно!")
Этикетка 1.Текст = "1"
Еще
MsgBox("не удалось отправить электронное письмо со следующей ошибкой:" & Smtp.GetLastErrDescription())
Конец, Если
Еще
Конец, Если
Следующий
Если Label1.Тогда Text = "1"
MsgBox("электронная почта была успешно отправлена!")
Конец, Если
Этикетка 1.Текст = ""
Конец, Если
'____________________________________________________________________________________________________________
Конец Подводной Лодки
Thomas Daniels
И какую ошибку вы получаете?
Thomas Daniels
Ты должен измениться:
<small>
Dim Smtp As New EASendMailObjLib.Mail
Smtp.LicenseCode = "TryIt"
Smtp.FromAddr = eid '"ab@mail.com"
Smtp.AddRecipientEx(email, 0)
Smtp.Subject = "aabb"
Smtp.BodyText = "aabb"
'' Add attachment from local disk
If Smtp.AddAttachment(pdfFile) <> 0 Then
MsgBox("Failed to add attachment with error:" & Smtp.GetLastErrDescription())
End If
Smtp.ServerAddr = server '"smtp.gmail.com"
Smtp.ServerPort = port ' 465
'' detect SSL/TLS automatically
Smtp.SSL_init()
Smtp.UserName = eid '"ab@mail.com"
Smtp.Password = pass '"123"
If Smtp.SendMail() = 0 Then
'' MsgBox("email was sent successfully!")
Label1.Text = "1"
Else
MsgBox("failed to send email with the following error:" & Smtp.GetLastErrDescription())
End If
Else
End If
Next
If Label1.Text = "1" Then
MsgBox("email was sent successfully!")
End If</small>
в:
<small>
Dim Smtp As New SmtpClient(server, port)
Dim msg As New MailMessage()
msg.From = New MailAddress(eid)
msg.[To].Add(email)
msg.Subject = "abcde"
msg.Body = "abcde"
msg.IsBodyHtml = True
' if your email body is not HTML, change this into false or remove this line
msg.Attachments.Add(New Attachment(pdfFile))
Smtp.EnableSsl = True
Smtp.Credentials = New NetworkCredential(eid, pass)
Try
Smtp.Send(msg)
Label1.Text = "1"
Catch e As Exception
MsgBox("failed to send email with the following error:" + e.Message)
End Try</small>
и добавить
<small>
Imports System.Net.Mail
Imports System.Net
</small>
в верхней части вашего файла кода.
Adrian4263
Я изменяю часть 2 кода,после этого я хочу запустить программу,всплывают там были ошибки сборки,вдруг появляются 12 ошибок,всплывают в другой части, ее под словом попала Красная линия.Например, этот код страницы 11 пройти &ЛТ;&ЛТ;слово 11 слово есть красная линия под словом.
Thomas Daniels
Что это за сообщение об ошибке?
Adrian4263
Пожалуйста,подождите немного, я пойду попробую еще раз посмотреть, можно ли бежать.
В скобке напишите адрес электронной почты и пароль правильно? ("моя почта@.hotmail.com", "пароль") нужно поставить "" <<это?
Thomas Daniels
Но если вы используете адрес Hotmail, то не используйте его smtp.gmail.com как SMTP-сервер. SMTP-сервер для Hotmail является smtp.live.com
Дополнительные сведения о конфигурации Hotmail SMTP:
http://www.serversmtp.com/en/smtp-hotmail
И да, вы должны написать адрес электронной почты и пароль между ними. (
и )
Adrian4263
("MyEmail@hotmail.com", "MyPassword") или ("MyEmail@hotmail.com и "мой пароль")?
Тогда мой сервер должен написать ("Smtp.live.com", 465) p/s:465 - это порт.
Thomas Daniels
Используйте первое: ("MyEmail@hotmail.com", "мой пароль")
И если вы хотите использовать Hotmail, то вам следует создать свой SmtpClient таким образом:
Dim Smtp как новый SmtpClient("smtp.live.com", 465)
Adrian4263
SmtpClient Smtp = новый SmtpClient("smtp.live.com", 465) где код должен меня поставить?
Под тусклым Smtp как новый SmtpClient("Smtp.live.com", 465)?
Thomas Daniels
Нет, вы должны заменить его
Dim Smtp как новый SmtpClient("smtp.gmail.com", 465)
с:
Dim Smtp как новый SmtpClient("smtp.live.com", 465)
Adrian4263
Ладно,я только что проверил код.
глутамат натрия.From = New MailAddress(eid)<<эта строка всплывает msg сказал, что параметр 'address' не может быть пустой строкой.
Имя параметра: адрес.
Thomas Daniels
Привет,
Измените eid на строку в вашем адресе электронной почты.
Adrian4263
Я пробовал,но не могу.Я изменяю ИД на ("adrian_leong90@hotmail.com") это всплывающее окно msgbox >>не удалось отправить электронное письмо со следующей ошибкой: сбой отправки почты.
Thomas Daniels
Вы изменили свои учетные данные на:
Smtp.Credentials = new NetworkCredential("adrian_leong90@hotmail.com", "ваш пароль")
Adrian4263
Мои верительные грамоты таковы
Smtp.Credentials = new NetworkCredential("adrianleong263@hotmail.com", "MyPassword"),вроде этого не может?
Adrian4263
Я уже поставил оба места на одно и то же письмо уже,но оно все равно одно и то же,покажите мне msgbox >>не удалось отправить письмо со следующей ошибкой: сбой отправки почты.
Thomas Daniels
Успешно ли добавлена ваша привязанность?
Adrian4263
Должно быть, добавить успешно.Мой код части 1-это экспорт и прикрепление файла,вы видите какие-либо проблемы?
Thomas Daniels
К сожалению, я не вижу проблемы. Я не знаю содержимого вашей базы данных. Используйте отладчик, чтобы найти ошибку.
Adrian4263
Как использовать отладчик для поиска ошибки?Теперь у меня есть 0 ошибок,я просто отлаживаю программу, нажимаю кнопку электронной почты,а затем всплывает MsgBox("не удалось отправить электронную почту со следующей ошибкой:" + e.Message)ошибка отправки почты заменить на e.Message.Не можете считать ошибкой право?
Thomas Daniels
Если вы используете Visual Studio: поместите точку останова в первую строку метода нажатия кнопки. Нажмите Клавишу F5. Появится ваша форма. Нажмите на кнопку. Затем вы перейдете к файлу кода и сможете пройти через все строки метода, чтобы увидеть, что не так.
Adrian4263
Ладно,наконец-то я могу отправить письмо успешно.Я меняю его порт с 465 на 25.Большое вам спасибо.
Но у меня все еще есть проблема,например,у меня есть 10 человек,которые могут выбрать,что такое A1-A10,после того,как я выберу его, появится еще одна страница, пример:я выбрал A1-A1, он показывает 1 страницу, если только 1 Страница я нажимаю кнопку электронной почты, она может быть отправлена успешно.Если я выберу от А1 до А3,то он будет приходить на 3 страницы,и я иду нажать кнопку электронной почты он только может отправить первую страницу выйти, а затем выйти эта следующая ошибка:
Obj,Export<< эта строка кода ошибки "процесс не может получить доступ к файлу 'C:\....\...\...\py1.pdf-потому что его использует другой процесс.
Adrian4263
Я уже решил ошибку Obj.Export.Но у меня все еще есть небольшая проблема,то есть PDF-файл,скажем, 10 человек,от А1 до А10.Я выбрал A1 ,подошел к 1 странице,после этого я нажимаю кнопку электронной почты, которую он сначала экспортирует в PDF-файл и прикрепляет отправить его.Это не проблема.
Если я выберу от А1 до А3,то получится 3 страницы,когда я нажму кнопку электронной почты,он должен экспортировать 1 на 1 в PDF-файл и отправить,но он не будет,он объединит 3 страницы в 1 PDF-файл.В чем же проблема?
Thomas Daniels
Почему бы вам не добавить несколько адресов "кому"? Просто используйте метод 'Smtp.To.Add' несколько раз.
Adrian4263
Где этот код я должен поместить?
Thomas Daniels
Под названием " msg.Из строки = ...' добавить:
<small>
msg.To.Add('emailAddress1@example.com');
msg.To.Add('emailAddress2@example.com');</small>
Измените эти адреса электронной почты на нужные вам адреса.
Adrian4263
Я сделал это,теперь я имею в виду,например: 10 человек/10 страниц,я хочу экспортировать 10 страниц в 10 PDF-файлов,я не хочу экспортировать 10 страниц в 1 PDF-файл.Вы понимаете, что я имею в виду?Допустим, теперь у меня есть 3 страницы,которые нужно отправить 3 людям,и каждый человек получит 1 страницу,и теперь моя проблема заключается в экспорте 3 страниц в 1 PDF-файл и отправке 3 людям, что означает, что каждый человек получит 3 страницы.
Thomas Daniels
Затем вы должны экспортировать каждую страницу в отдельный PDF-файл и отправить 10 различных электронных писем с различными вложениями.
Adrian4263
На самом деле я не знаю кода для экспорта отдельного PDF-файла.Я должен выяснить это сейчас.
Adrian4263
Вы знаете, что такое код? Itextsharp я никогда раньше не использовал.
Thomas Daniels
Извините, я не знаю кода. На самом деле я никогда не использовал iTextSharp, но я знаю, что вы можете создавать PDF-файлы с помощью iTextSharp.
Adrian4263
О, я вижу,на самом деле я могу создавать PDF-файлы сейчас,просто не могу разделить страницу на каждый файл.10 страниц на 1 PDF-файл за 1 запуск.
Adrian4263
Видел, что это бесполезно для меня.Все еще есть какое-то решение?Кроме itextSharp.
Thomas Daniels
Вы можете попробовать использовать PDFsharp вместо iTextSharp
Adrian4263
Теперь кристально экспорт отчетов в PDF-файлы, использовать PDFSharp это работа?
Adrian4263
Вы знаете, как удалить экспортированные файлы(код visual basic)? Если я нажму кнопку email,отчет будет экспортирован в PDF-файл и прикреплен к отправке по электронной почте.Что мне нужно, так это то, что экспортированные файлы будут автоматически удалены после отправки моей электронной почты. Это понятно?Вы можете спросить меня,если мой вопрос не ясен.
Thomas Daniels
Да, после того как вы отправили письмо, запустите этот код:
<small>
System.IO.File.Delete(pathOfYourPdfFile)</small>
Измените pathOfYourPdfFile на путь к вашему PDF-файлу или измените его на переменную, содержащую этот путь.
Adrian4263
Я пробовал,исключение ввода-вывода было необработанным(процесс не может получить доступ к файлу 'C:\......py1.pdf-потому что его использует другой процесс.)В чем же проблема?
Thomas Daniels
Попытаетесь изменить:
<small>System.IO.File.Delete(pathOfYourPdfFile)</small>
в:
<small>
msg.Dispose()
System.IO.File.Delete(pathOfYourPdfFile)</small>
Adrian4263
Под msg есть синяя линия, это неправильно?
Adrian4263
Я уже пытался, саметинг.
Thomas Daniels
Мне очень жаль, но я понятия не имею, что случилось. Извините.
Adrian4263
Все в порядке.Вы Знаете, Что Делать Петлю?
Thomas Daniels
Тогда я знаю петлю Do.