none
[Resolvido!] Envio de email com anexo guardado a funcionar! Mas como meter o envio de anexo por upload? RRS feed

  • Pergunta

  • Olá

    Tenho o código de envio de mensagem email a funcionar que pode ser útil para muita gente. Segue abaixo em
    Asp.Net VB.

    Esse código pega ainda um ficheiro anexo (já guardado num servidor online) e envia ele para o destinatário.

    Como meto em vez de estar o ficheiro online, estar localmente no pc e fazer procurar no pc e depois enviar junto com a mensagem? Sei que funciona qualquer coisa por upload mas não estou chegando lá...

    Ajuda!!!!

    O código a funcionar que tenho é:

    <%@ Page Language="VB" Debug="true" %>

    <%@ Import Namespace="System.Globalization" %>
    <%@ import Namespace="System.Data" %>
    <%@ import Namespace="System.Data.OleDb" %>
    <%@ Import Namespace="System" %>
    <%@ Import Namespace="System.Web.Mail" %>



    <script language="VB" runat="server">
    Sub enviar_OnClick(Source As Object, E As EventArgs)

    Dim Email As New MailMessage

    Email.From = TbxMail.text
    Email.To = "emailpara@servidor.com"
    Email.Cc = "
    emailcc@servidor.com"
    Email.Bcc = "
    emailbcc@gmail.com"
    Email.Subject = "Assunto do email"
    Email.Attachments.Add(New MailAttachment("c:\Inetpub\wwwroot\ola.docx"))

    Email.BodyFormat = MailFormat.Html
    Email.Body = "<font face=verdana size=4>Texto desta mensagem do utilizador<hr></font><font face=verdana size=1><strong>Nome: <br>&nbsp;&nbsp;</stong>" & TbxNome.text & "<br> <strong>Email: <br>&nbsp;&nbsp;</stong> " & TbxMail.text & "<br><strong>Contacto: <br>&nbsp;&nbsp;</stong> " & TbxTelefone1.text & " <br>&nbsp;&nbsp; " & TbxTelefone2.text & "</font>"

    SmtpMail.SmtpServer = "localhost"
    SmtpMail.Send(Email)
    LblMensagem.Text = "Email enviado com sucesso!"

    End Sub

    </script>


    sábado, 17 de janeiro de 2009 21:33

Respostas

Todas as Respostas

  • Boas João,

     

    Por tratar-se de uma aplicação Web, todo esse código é executado no servidor, por isso o ficheiro sempre tem de estar no servidor, para que você possa acessá-lo...

     

    Em outras palavras, você não tem como aceder o ficheiro que está na máquina do utilizador que está a visitar o site... O que você pode fazer, é fornecer uma interface para que o  utilizador faça o upload do ficheiro para servidor, e quando você receber o ficheiro, então pode enviar por e-mail ou fazer qualquer outra coisa com esse ficheiro.

     

    Os artigos abaixo mostram como você pode criar uma página utilizando o controle FileUpload do ASP .NET, que permita que os utilizadores possam enviar ficheiros que são gravados no servidor:

     

    Upload de arquivos com ASP.Net
    http://www.50minutos.com.br/2007/10/upload-de-arquivos-com-aspnet/

     

    Upload de Arquivos com ASP.NET

    http://www.pcsolucoes.com/blog/post/2008/08/11/Upload-de-Arquivos-com-ASPNET.aspx

     

    Fazendo UpLoad de Arquivos com ASP.NET
    http://diariodafonte.wordpress.com/2007/11/07/fazendo-upload-de-arquivos-com-aspnet/

     

    Abraços,
    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    domingo, 18 de janeiro de 2009 16:23
    Moderador
  • Muito agradecido Caio... usei esses links e um pouco de bate na parede e tudo ok...

    Segue o meu código que pode ser util, é um exemplo para submeter um curriculo e info de contacto:

    <%@ Page Language="VB" Debug="true" %>

    <%@ Import Namespace="System.Globalization" %>
    <%@ import Namespace="System.Data" %>
    <%@ import Namespace="System.Data.OleDb" %>
    <%@ Import Namespace="System" %>
    <%@ Import Namespace="System.Web.Mail" %>



    <script language="VB" runat="server">


        Dim savePath As String = "c:\Inetpub\..."

        Sub Upload_Click(ByVal source As Object, e As EventArgs)

            Dim Loop1 As Integer
            Dim TempFileName As String
            Dim MyFileCollection As HttpFileCollection = Request.Files

            Dim PosFinal As Integer
            Dim NomeRvs As String
            Dim NomeArq As String

            For Loop1 = 0 To MyFileCollection.Count - 1
            Try
                PosFinal = InStr(StrReverse(MyFileCollection(Loop1).FileName), "\")
            If PosFinal > 0 Then
                NomeRvs = StrReverse(MyFileCollection(Loop1).FileName)
                NomeArq = StrReverse(Mid(NomeRvs, 1, PosFinal - 1))
                LblNomeFicheiro.Text += "c:\Inetpub\..." & NomeArq
                TempFileName = savePath & NomeArq
                MyFileCollection(Loop1).SaveAs(TempFileName)
            End If
            LblErroFicheiro.Text = ""
            ImgAviso.visible = false
            LblGuardado.Text = "Currículo " & NomeArq & " guardado."
           
            Catch exc As Exception
                LblErroFicheiro.Text = "Erro na Transferência"
            End Try
            Next Loop1

        End Sub




        Sub enviar_OnClick(sender As Object, E As System.Web.UI.ImageClickEventArgs)

            Dim Email As New MailMessage
            Try
                Email.From = TbxMail.text
                Email.To = "utilizador@servidor.com"
                Email.Cc = "
    utilizador@servidor.com"
                Email.Bcc = "
    utilizador@servidor.com"
                Email.Subject = "Candidatura para trabalhar"
                Email.Attachments.Add(New MailAttachment(LblNomeFicheiro.Text))
       
                Email.BodyFormat = MailFormat.Html
                Email.Body = "<font face=verdana size=4>Candidatura submetida a partir de Site.pt<hr></font><font face=verdana size=1><strong>Nome: <br>&nbsp;&nbsp;</stong>" & TbxNome.text & "<br> <strong>Email: <br>&nbsp;&nbsp;</stong> " & TbxMail.text & "<br><strong>Contacto: <br>&nbsp;&nbsp;</stong> " & TbxTelefone1.text & " <br>&nbsp;&nbsp; " & TbxTelefone2.text & "</font>"
       
                SmtpMail.SmtpServer = "localhost"
                SmtpMail.Send(Email)
                LblMensagem.Text = "  Candidatura enviada com sucesso!"
                ImgInfo.Visible = True
                LblErroFicheiro.Text = ""
                ImgAviso.Visible = False
            Catch exc As Exception
                LblErroFicheiro.Text = "Tem de enviar um curriculo!"
                ImgAviso.Visible = True
            End Try
        End Sub

    </script>



    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    sábado, 24 de janeiro de 2009 15:46