通过电子邮件将ReportViewer作为PDF发送

时间:2013-12-15 22:59:00

标签: vb.net email reportviewer

我在vb.net 2012中有一个应用程序。我正在使用ReportViewer创建报告 - 我希望能够单击按钮将报告作为pdf发送到邮件

Public Class Form3

Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.salesTableAdapter.Fill(Me.ordersDataSet.sales)
    Me.ReportViewer1.RefreshReport()

    Me.salesTableAdapter.Fill(Me.ordersDataSet.sales)
    Me.ordersDataSet.sales.DefaultView.RowFilter = String.Format("ser={0}", Form1.SalesDataGridView.Item(0, Form1.SalesDataGridView.CurrentRow.Index).Value)

    salesBindingSource.DataSource = Me.ordersDataSet.sales.DefaultView
    Me.ReportViewer1.RefreshReport()


End Sub

1 个答案:

答案 0 :(得分:0)

你可以试试这个

const string HTML_TAG_PATTERN = "<.*?>";
static string StripHTML(string inputString)
{
  return Regex.Replace(inputString, HTML_TAG_PATTERN, string.Empty);
}

public static void sendMessage()
{
  var username = "john.doe@gmail.com";
  var password = "password";
  MailAddress MailFrom = new MailAddress("john.doe@gmail.com");
  MailAddress MailTo = new MailAddress("john.doe@gmail.com");
  var subject = "TEST SUBJECT";
  var attachmentPath = "test.pdf";
  var mailBody = "<b>test</b>";


  NetworkCredential cred = new NetworkCredential(username, password);

  System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
  smtp.Host = "smtp.gmail.com";
  smtp.UseDefaultCredentials = false;
  smtp.EnableSsl = true;
  smtp.Credentials = cred;
  smtp.Port = 587;

  MailMessage mail = new MailMessage();

  mail.IsBodyHtml = true;

  AlternateView avAlternateView = null;
  Encoding myEncoding = Encoding.GetEncoding("UTF-8");

  avAlternateView = AlternateView.CreateAlternateViewFromString(StripHTML(mailBody), myEncoding, "text/plain");
  mail.AlternateViews.Add(avAlternateView);

  avAlternateView = AlternateView.CreateAlternateViewFromString(mailBody, myEncoding, "text/html");
  mail.AlternateViews.Add(avAlternateView);

  mail.Sender = MailFrom;
  mail.From = MailFrom;
  mail.ReplyTo = MailFrom;

  mail.To.Add(MailTo);

  mail.Subject = subject;
  mail.SubjectEncoding = Encoding.GetEncoding("UTF-8"); 

  mail.BodyEncoding = Encoding.GetEncoding("UTF-8");

  Attachment attachment = new Attachment(attachmentPath);
  mail.Attachments.Add(attachment);
  try
  {
    smtp.Send(mail);
  }
  catch (Exception ex)
  {
  }
}

请参阅:Reportviewer send email via gmail

http://www.codeproject.com/Articles/32109/Send-Mail-and-Print-Report-in-Report-Viewer-Contro

http://forums.asp.net/t/1622010.aspx