精华内容
下载资源
问答
  • Private Sub SendEmail() Dim email As System.Web.Mail.MailMessage = New Mail.MailMessage Dim emailsmtp As System.Web.Mail.SmtpMail Dim emailattch As System.Web.Mail.MailA

        Private Sub SendEmail()
            Dim email As System.Web.Mail.MailMessage = New Mail.MailMessage
            Dim emailsmtp As System.Web.Mail.SmtpMail
            Dim emailattch As System.Web.Mail.MailAttachment

            email.From = "mingl@appfinityasia.com"
            email.To = "dongzhi@gmail.com"
            email.Subject = "email test" & System.DateTime.Now.ToString
            email.Body = "email body"
            emailattch = New Mail.MailAttachment("e:/test.txt", System.Web.Mail.MailEncoding.Base64)
            email.Attachments.Add(emailattch)

            emailsmtp.Send(email)
        End Sub

    展开全文
  • 这两天对Python的邮件模块比较感兴趣,于是就查了查资料。同时在实际的编码过程中也遇到了各种各样的问题。下面我就来分享一下我与... :-)核心知识点因为今天主要讲解的是如何发送带有附件的邮件,那么核心肯定是附件了

    这两天对Python的邮件模块比较感兴趣,于是就查了查资料。同时在实际的编码过程中也遇到了各种各样的问题。下面我就来分享一下我与smtplib的故事。


    前提条件

    我的上一篇博文里面讲解了,发送邮件必须的条件。这里同样是适用的。大致就是要开启邮箱的SMPT/POP服务等等。如果不明白,可以看看发送纯文本邮件。里面讲的还不错。 :-)

    核心知识点

    因为今天主要讲解的是如何发送带有附件的邮件,那么核心肯定是附件了。怎么才能发附件呢?

    其实我们换个思路,就不难理解了。因为我们发送邮件,经过了应用层–>> 传输层–>> 网络层–>>数据链路层–>>物理层。这一系列的步骤,全都变成了比特流了。所以无论是纯文本,图片,亦或是其他类型的文件。在比特流的面前,都是平等的。所以我们发送附件,也是按照发送纯文本的模式来做就行,只不过加上一些特殊的标记即可。

    
    \# 首先是xlsx类型的附件
    xlsxpart = MIMEApplication(open('test.xlsx', 'rb').read())
    xlsxpart.add_header('Content-Disposition', 'attachment', filename='test.xlsx')
    msg.attach(xlsxpart)
    
    \# jpg类型的附件
    jpgpart = MIMEApplication(open('beauty.jpg', 'rb').read())
    jpgpart.add_header('Content-Disposition', 'attachment', filename='beauty.jpg')
    msg.attach(jpgpart)
    
    \# mp3类型的附件
    mp3part = MIMEApplication(open('kenny.mp3', 'rb').read())
    mp3part.add_header('Content-Disposition', 'attachment', filename='benny.mp3')
    msg.attach(mp3part)

    经过这三小段的代码,想必你已经很清楚了吧。无非就是使用MIMEApplication进行包装一下,然后设置一下内容。最后添加到邮件内容。就是这几步,就搞定了。

    完整的代码

    # coding:utf-8
    
    #    __author__ = 'Mark sinoberg'
    #    __date__ = '2016/5/26'
    #    __Desc__ = 实现发送带有各种附件类型的邮件
    
    import urllib, urllib2
    import smtplib
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.mime.application import MIMEApplication
    
    username = '156408XXXXX@163.com'
    password = 'XXXXXXXX'
    sender = username
    receivers = ','.join(['10643XXXX2@qq.com'])
    
    # 如名字所示: Multipart就是多个部分
    msg = MIMEMultipart()
    msg['Subject'] = 'Python mail Test'
    msg['From'] = sender
    msg['To'] = receivers
    
    # 下面是文字部分,也就是纯文本
    puretext = MIMEText('我是纯文本部分,')
    msg.attach(puretext)
    
    # 下面是附件部分 ,这里分为了好几个类型
    
    # 首先是xlsx类型的附件
    xlsxpart = MIMEApplication(open('test.xlsx', 'rb').read())
    xlsxpart.add_header('Content-Disposition', 'attachment', filename='test.xlsx')
    msg.attach(xlsxpart)
    
    # jpg类型的附件
    jpgpart = MIMEApplication(open('beauty.jpg', 'rb').read())
    jpgpart.add_header('Content-Disposition', 'attachment', filename='beauty.jpg')
    msg.attach(jpgpart)
    
    # mp3类型的附件
    mp3part = MIMEApplication(open('kenny.mp3', 'rb').read())
    mp3part.add_header('Content-Disposition', 'attachment', filename='benny.mp3')
    msg.attach(mp3part)
    
    ##  下面开始真正的发送邮件了
    try:
        client = smtplib.SMTP()
        client.connect('smtp.163.com')
        client.login(username, password)
        client.sendmail(sender, receivers, msg.as_string())
        client.quit()
        print '带有各种附件的邮件发送成功!'
    except smtplib.SMTPRecipientsRefused:
        print 'Recipient refused'
    except smtplib.SMTPAuthenticationError:
        print 'Auth error'
    except smtplib.SMTPSenderRefused:
        print 'Sender refused'
    except smtplib.SMTPException,e:
        print e.message
    

    验证结果

    没有什么比来张图片更有说服力的了。如图
    带有各种附件的邮件结果图

    错误总结

    我遇到的错误如下:

    D:\Software\Python2\python.exe E:/Code/Python/MyTestSet/mail/withappedix.py
    Traceback (most recent call last):
      File "E:/Code/Python/MyTestSet/mail/withappedix.py", line 51, in <module>
        client.sendmail(sender, receivers, msg.as_string())
      File "D:\Software\Python2\lib\email\message.py", line 137, in as_string
        g.flatten(self, unixfrom=unixfrom)
      File "D:\Software\Python2\lib\email\generator.py", line 83, in flatten
        self._write(msg)
      File "D:\Software\Python2\lib\email\generator.py", line 115, in _write
        self._write_headers(msg)
      File "D:\Software\Python2\lib\email\generator.py", line 164, in _write_headers
        v, maxlinelen=self._maxheaderlen, header_name=h).encode()
      File "D:\Software\Python2\lib\email\header.py", line 410, in encode
        value = self._encode_chunks(newchunks, maxlinelen)
      File "D:\Software\Python2\lib\email\header.py", line 370, in _encode_chunks
        _max_append(chunks, s, maxlinelen, extra)
      File "D:\Software\Python2\lib\email\quoprimime.py", line 97, in _max_append
        L.append(s.lstrip())
    AttributeError: 'list' object has no attribute 'lstrip'
    
    Process finished with exit code 1
    

    我的解决办法是
    receiver parameter was list type. either it should be list converted to string using join method or if it is a single recipient, then pass it as a string only

    是的,就是receivers = ','.join(['10XXXXXXXX@qq.com'])。这样就搞定了。

    也许,你遇到的错误不是我这个,那么也不用担心,我这里有一份比较齐全的错误码对照表。你可以对照着你的错误码来查找具体的错误原因。这样有的放矢,效率会更高一点的。

    在编码的过程中,我也是遇到了很多意想不到的错误。而这些错误的错误码对我们来说是很有用的。这对我们测试代码以及找到其中出错的原因和有帮助。

    企业退信的错误码对照表

    (^__^) 嘻嘻……。这下字体够大了吧。

    展开全文
  • 前言:使用发邮件这个功能不难,但是也一些坑,下面我把开发邮件功能总结了一下分享给大家,同时为了避免篇幅过长,导致大家看不仔细或看一半不想看了,我将这个功能细分了一下,写了好几篇供大家各取所需。...

    前言:使用发邮件这个功能不难,但是也有一些坑,下面我把开发邮件功能总结了一下分享给大家,同时为了避免篇幅过长,导致大家看的不仔细或看一半不想看了,我将这个功能细分了一下,写了好几篇供大家各取所需。

    Spring mail提供了 JavaMailSender接口实现邮件发送,其底层还是javamail,不过是进一步封装变得更加易用了。下面通过实例看看如何在Spring Boot中使用 JavaMailSender 发送邮件。

    一、引入maven依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>


    二、开启POP3/SMTP服务

           把这个写在第二步,是因为很多没做过发送邮件的可能不知道需要开启这个才能使用第三方程序来发邮件,并且生成的授权码下面也要用到。

     三、配置application.properties文件

    spring.mail.host=smtp.qq.com      --qq邮箱为smtp.qq.com      163邮箱为smtp.163.com
    spring.mail.username=123456789@qq.com     --自己定义的发送者账号
    spring.mail.password=123456     --这里不是注册时的密码,而是上面生成的授权码
    spring.mail.properties.mail.smtp.auth=true   --开启验证 true为开启,false不开启
    spring.mail.properties.mail.smtp.starttls.enable=true    --加密通讯,true开启,false不开启
    spring.mail.properties.mail.smtp.starttls.required=true    --是否必须通过使用加密通讯进行通讯,true开启,false不开启

     四、编写service

    为了能真实使用,编写了一个MailService ,我就不在junt上写了

    @Service
    public class MailService {
    
    	@Autowired
    	private JavaMailSender mailSender;
    
         // 获取application.properties中的值赋给from
    	@Value("${spring.mail.username}")
    	private String from;
    
    	/**
    	 * @param toUsers 收件人
    	 * @param ccUsers 抄送人
    	 * @param title 标题
    	 * @param text 内容
    	 * @param fileName 文件名称
    	 * @param filePath 文件路径
    	 * @return
    	 */
    	public boolean sendFileMail(String[] toUsers,String[] ccUsers, String title, String text,String filePath,String fileName) {
    		boolean isSend = true;
    		try {
    			MimeMessage mimeMessage = mailSender.createMimeMessage();
    			MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
    			helper.setFrom(from);// 发件人
    			helper.setTo(toUsers);// 收件人
    			//helper.setCc(ccUsers);//抄送人,使用Cc还是Bcc大家根据具体场景自己选择
    			helper.setBcc(ccUsers);//秘密抄送(发件人,收件人,抄送人都不会看到抄送给谁了)
    			helper.setSubject(title);// 标题
    			helper.setText(text);// text:内容
    			File file = new File(filePath);// 创建文件
    			FileSystemResource resource = new FileSystemResource(file);
    			helper.addAttachment(fileName, resource);//若要添加多个附件,需要创建多个file然后分别addAttachment
    			mailSender.send(mimeMessage);// 发送邮件
    		} catch (MessagingException e) {
    			isSend = false;
    			e.printStackTrace();
    		}
    		return isSend;
    	}
    }


     五、在controller中或service中调用

    写到这大家肯定都会写了,下面我以controller为例(具体使用场景肯定不是这样的,我只是给大家举个例子)

    @Controller
    public class UserController {
     
        @Autowired
        MailService mailService;
     
        @RequestMapping("sendEmail")
        public String sendMail(ModelMap modelMap) {
            String[] toUsers={"666666@163.com","777777@163.com"};
            String[] ccUsers = {"888888@qq.com","999999@163.com"};
            String isSend=mailService.sendFileMail(toUsers, ccUsers,"测试邮件", "测试内容", "C:\\Users\\文档\\test1.txt", "test0001");
             if(isSend){
                modelMap.put("isSend", "成功发送给666666@163.com用户");
             }else{
                modelMap.put("isSend", "发送失败");
             }
            return "index";
        }
    }


    六、最后前台调用sendEmail就行了,具体我就不写了。

    其他发送邮件功能参考:
    SpringBoot发送邮件(一)只有文本的简单邮件:https://blog.csdn.net/m0_37679452/article/details/84345616

    SpringBoot发送邮件(二)发送包含图片的邮件:https://blog.csdn.net/m0_37679452/article/details/84370881

     

    展开全文
  • 在这里,我想解释一下我库EMailSender版本2,现在允许附件并支持Arduino,esp32和esp8266。
  • 通过阅读本文,您将学习直接从Android应用程序中应用程序发送电子邮件。 我们将使用JavaMail API ,它助于简化对SMTP服务器身份验证。 JavaMail API: JavaMail API: “… provides a platform-independent ...

    By reading this piece, you will learn to send an email directly from the application in an Android application. We will be using the JavaMail API which helps to facilitate the authentication to the SMTP server.

    通过阅读本文,您将学习直接从Android应用程序中的应用程序发送电子邮件。 我们将使用JavaMail API ,它有助于简化对SMTP服务器的身份验证。

    JavaMail API:

    JavaMail API:

    “… provides a platform-independent and protocol-independent framework to build mail and messaging applications. The JavaMail API is available as an optional package for use with the Java SE platform and is also included in the Java EE platform.”

    “……提供了独立于平台和协议的框架来构建邮件和消息传递应用程序。” JavaMail API作为与Java SE平台一起使用的可选软件包提供,也包含在Java EE平台中。”

    There are three sections in this article:

    本文分为三个部分:

    1. Setup

      建立
    2. Implementation

      实作
    3. Conclusion

      结论

    1.设定 (1. Setup)

    Make sure that you have installed Android Studio and downloaded the necessary SDK and build tools.

    确保已安装Android Studio并下载了必要的SDK和构建工具。

    Create a new project with an Empty Activity. Head over to the following download link and download all of the files. You should have the following files.

    Empty Activity创建一个新项目。 转到下面的下载链接并下载所有文件。 您应该具有以下文件。

    Please be noted that these dependencies are not the latest version. If you prefer to get the latest version, head over to the following JavaMail link and download the respective javax.mail.jar for 1.6.2.

    请注意,这些依赖项不是最新版本。 如果您希望获得最新版本,请转到下面的JavaMail链接并下载用于1.6.2的相应javax.mail.jar

    Place all of the jar files inside the libs folder of your project.

    将所有jar文件放在项目的libs文件夹中。

    Image for post

    Right-click on them and “Add as Library”. Check the gradle.build (Module: app) file. You should have the following code inside the dependencies.

    右键单击它们,然后单击“添加为库”。 检查gradle.build (Module: app)文件。 您应该在依赖项中包含以下代码。

    Image for post

    Sync the gradle just to make sure that the modules are loaded properly, in case you have conflicting classes and functions. Go to the Build menu and click on the Clean Project sub-menu.

    同步gradle只是为了确保正确加载了模块,以防您有冲突的类和功能。 转到“ 生成”菜单,然后单击“ 清理项目”子菜单。

    Head over to the AndroidManifest.xml file and add the following permission. You need to provide the application access to use INTERNET.

    转到AndroidManifest.xml文件并添加以下权限。 您需要提供应用程序访问权限才能使用INTERNET

    <uses-permission android:name="android.permission.INTERNET"/>

    Let’s proceed to the next section to kickstart your Android project.

    让我们继续下一部分以启动您的Android项目。

    2.实施 (2. Implementation)

    Let’s create a new class called SendEmailService. We will use it as a singleton object for our application.

    让我们创建一个名为SendEmailService的新类。 我们将其用作应用程序的单例对象。

    public class SendEmailService {}

    进口 (Import)

    Add the following import declaration at the top of the MainActivity.java.

    在MainActivity.java的顶部添加以下导入声明。

    If you are unsure about which module to import, kindly proceed to the next part as you can easily import it later by either hovering over the error and hitting Alt+Shift+Enter, or simply just Alt+Enter to jump to a specific error and doing the appropriate import declaration.

    如果您不确定要导入哪个模块,请继续进行下一部分,因为稍后可以将其悬停在错误上并单击Alt+Shift+Enter ,或者只是Alt+Enter即可跳至特定错误,然后轻松地导入它。做适当的进口申报。

    You can even hover over the error and click on import class, Android Studio will automatically import it for you. Make sure you select the correct class if there are multiple selections for the same class name.

    您甚至可以将鼠标悬停在错误上,然后点击导入类 ,Android Studio会自动为您导入它。 如果同一类名有多个选择,请确保选择正确的类。

    If you experience issues with import errors, kindly make sure that you have installed the appropriate dependencies.

    如果遇到导入错误的问题,请确保已安装适当的依赖项。

    初始化 (Initialization)

    Inside your SendEmailService class, add the following variables. Replace the input with your email and the respective password.

    在您的SendEmailService类中,添加以下变量。 用您的电子邮件和相应的密码替换输入内容。

    Create a synchronized getInstance method that accepts a Context parameter.

    创建一个接受Context参数的同步getInstance方法。

    It is recommended to have a context during initialization as it provides us with more flexibility later on when we are dealing with UI. We will use this function as initialization to ensure that only a single object is created.

    建议在初始化期间使用context ,因为这样在以后处理UI时可以为我们提供更大的灵活性。 我们将使用此函数作为初始化,以确保仅创建单个对象。

    Create a constructor and add the following initialization.

    创建一个构造函数并添加以下初始化。

    Please be noted that I am using Outlook as the SMTP server and the connection is based on TLS. In fact, you can use your own SMTP server or third-party services such as Gmail or Outlook.

    请注意,我使用Outlook作为SMTP服务器,并且连接基于TLS。 实际上,您可以使用自己的SMTP服务器或第三方服务,例如Gmail或Outlook。

    You have to modify the parameters based on the settings of the SMTP server that you are going to use. You have to allow your email to be accessible by third-party services.

    您必须根据要使用的SMTP服务器的设置来修改参数。 您必须允许第三方服务访问您的电子邮件。

    The settings for Outlook are as follows. Modify accordingly if you are using other SMTP servers.

    Outlook的设置如下。 如果您正在使用其他SMTP服务器,请进行相应的修改。

    Image for post

    Let’s create a SendEmail function that will host all the code required to send an email.

    让我们创建一个SendEmail函数,该函数将托管发送电子邮件所需的所有代码。

    public void SendEmail() {}

    Add a try catch block inside the function for catching MessagingException.

    在用于捕获MessagingException的函数中添加一个try catch块。

    try {}
    catch (MessagingException e) {
    e.printStackTrace();
    }

    哑剧 (MIME)

    The next step is to create email messages. Place the following code inside the try catch block. You can set the sender and receiver email using your own emails to test it out.

    下一步是创建电子邮件。 将以下代码放入try catch块中。 您可以使用自己的电子邮件设置发送者和接收者的电子邮件进行测试。

    If you are sending it to multiple recipients, you can rely on the InternetAdresss function to parse it for you. Simply add all of them as a single String delimited by comma.

    如果要将其发送给多个收件人,则可以依靠InternetAdresss函数为您解析它。 只需将它们全部添加为以逗号分隔的单个字符串即可。

    If you are having trouble, store them in a list and use the following code:

    如果遇到问题,请将它们存储在列表中并使用以下代码:

    List<String> recipient = new ArrayList<String>();
    //add item to list
    String.join(",", recipient);

    Once you are done, add the following code which facilitates message sending.

    完成后,添加以下代码以促进消息发送。

    Transport.send(message);

    异步任务 (AsyncTask)

    You cannot run this call directly from the main thread as it will block the process. As a result, an error will occur.

    您不能直接从主线程运行此调用,因为它将阻止进程。 结果,将发生错误。

    You can easily resolve it by wrapping it inside a Runnable function. I am using AsyncTask to achieve this. Simply place the following code in your onCreate function or inside a function that will be called during Button click to test it out.

    您可以通过将其包装在Runnable函数中来轻松解决它。 我正在使用AsyncTask来实现这一点。 只需将以下代码放在onCreate函数中或在Button click过程中将被调用的函数中进行测试即可。

    执行器服务 (ExecutorService)

    In the latest update, the documentation in Android recommends using java.util.concurrent instead, as AsyncTask was deprecated in API level R.

    在最新更新中,Android中的文档建议改用java.util.concurrent ,因为AsyncTask在API级别R中已弃用。

    Image for post

    Add the following import statement:

    添加以下导入语句:

    import java.util.concurrent.ExecutorService;                       import java.util.concurrent.Executors;

    Create a new ExecutorService object. I will be using just a SingleTheadExecutor.

    创建一个新的ExecutorService对象。 我将只使用SingleTheadExecutor

    static final ExecutorService emailExecutor = Executors.newSingleThreadExecutor();

    Replace the AsyncTask part with the following code:

    用以下代码替换AsyncTask部分:

    You should be able to get the following result in your mailbox when you run the app.

    运行该应用程序时,您应该能够在邮箱中获得以下结果。

    Image for post

    使用MimeMultipart的图像附件 (Image attachment using MimeMultipart)

    For adding an image attachment, you can do so by utilizing the MimeMultipart class.

    要添加图像附件,可以通过使用MimeMultipart类来实现。

    Let’s comment out the setText function and continue writing a few more lines of Java code right above the Transport.send function. Initialize the MimeMultipart variable as follows:

    让我们注释掉setText函数,并继续在Transport.send函数的上方再写几行Java代码。 初始化MimeMultipart变量,如下所示:

    Multipart multipart = new MimeMultipart();

    Set up a MimeBodyPart and call setContent with your respective text. You can specify an HTML text as well. Once you are done, add the body part to the MimeMultipart variable by calling the addBodyPart function.

    设置一个MimeBodyPart并使用您各自的文本调用setContent 。 您也可以指定HTML文本。 完成后,通过调用addBodyPart函数将正文部分添加到MimeMultipart变量中。

    BodyPart messageBodyPart = new MimeBodyPart();String htmlText = "<H1>Welcome to Medium!</H1>";
    messageBodyPart.setContent(htmlText, "text/html");
    multipart.addBodyPart(messageBodyPart);

    In order to send an image, you have to convert it into byte arrays. Let’s say you have an ImageView with the ID as image in your XML. Simply add the following import.

    为了发送图像,您必须将其转换为字节数组。 假设您在XML中有一个ID为图像的ImageView 。 只需添加以下导入。

    import android.widget.ImageView;

    Initialize a variable inside your MainActivity class.

    在您的MainActivity类中初始化一个变量。

    private ImageView mImageView;

    Assign the image view by finding it via the ID inside the onCreate function.

    通过在onCreate函数内的ID查找图像视图来分配图像视图。

    mImageView = (ImageView) findViewById(R.id.image);

    You can get the Bitmap object from the ImageView via the following method.

    您可以通过以下方法从ImageView获取Bitmap对象。

    Bitmap bitmap = ((BitmapDrawable) mImageView.getDrawable()).getBitmap();

    You have to modify the sendEmail function to accept the bitmap as parameter.

    您必须修改sendEmail函数以接受位图作为参数。

    public void SendEmail(Bitmap bitmap)

    Inside the SendEmail function, continue appending the following code after the addBodyPart. We will be getting the bitmap from the ImageView and capture the byte array inside a ByteArrayOutputStream.

    SendEmail函数内部,继续在addBodyPart之后追加以下代码。 我们将从ImageView获取位图,并捕获ByteArrayOutputStream的字节数组。

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] imageInByte = baos.toByteArray();

    Create a new MimeBodyPart and a ByteArrayDataSource from the byte array.

    从字节数组创建一个新的MimeBodyPart和一个ByteArrayDataSource

    You can set the filename based on your own preferences. Continue adding the body part to the MimeMultipart variable by calling the addBodyPart function.

    您可以根据自己的喜好设置文件名。 通过调用addBodyPart函数,继续将正文部分添加到MimeMultipart变量中。

    Finally, call setContent and pass in the multipart right above the Transport.send function.

    最后,调用setContent并在Transport.send函数上方传递多部分内容。

    message.setContent(multipart);
    Transport.send(message);

    You should be able to see the following email in your mailbox.

    您应该能够在邮箱中看到以下电子邮件。

    Image for post

    文字附件 (Text attachment)

    You can add text attachment files as well.

    您也可以添加文本附件文件。

    Add the following code on top of the message.setContent function. I will be creating a simple ByteArrayDataSource from the byte arrays of a string. You can pass the Charset parameters as UTF-8 as well if you are writing Unicode text.

    message.setContent函数的顶部添加以下代码。 我将从字符串的字节数组创建一个简单的ByteArrayDataSource 。 如果要编写Unicode文本,也可以将Charset参数作为UTF-8传递。

    You should be able to obtain the following result

    您应该能够获得以下结果

    Image for post

    信任库 (TrustStore)

    If you are having errors with sending it due to the TrustStore issue, add the following properties.

    如果由于TrustStore问题而在发送时TrustStore ,请添加以下属性。

    Please be reminded this only works if you are using the latest JavaMail version. Theoretically, you can pass in * as the value to allow all certificates but it is advisable not to do so.

    请注意,这仅在使用最新的JavaMail版本时有效。 从理论上讲,您可以输入*作为允许所有证书的值,但建议不要这样做。

    prop.put("mail.smtp.ssl.trust", "smtp.office365.com");

    MailCapCommandMap (MailCapCommandMap)

    If you encountered issues with MIME type, you need to add the following import declaration.

    如果遇到MIME类型问题,则需要添加以下导入声明。

    import javax.activation.CommandMap;
    import javax.activation.MailcapCommandMap;

    Right above the Properties, add the following code. This is to ensure that it can handle all types of MIME in our emails.

    在“ Properties ”上方,添加以下代码。 这是为了确保它可以处理我们电子邮件中的所有类型的MIME。

    Feel free to check out the complete code for SendEmailService.java at this GitHub link.

    可以在此GitHub链接上免费查看SendEmailService.java的完整代码。

    3.结论 (3. Conclusion)

    Let’s recap what you have learned today. We started with a simple setup by downloading the necessary JAR files and adding it as a library into the project. Besides, we set the permissions for INTERNET access explicitly in the AndroidManifest.xml.

    让我们回顾一下您今天学到的东西。 我们从下载所需的JAR文件并将其作为库添加到项目中的简单设置开始。 此外,我们在AndroidManifest.xml显式设置了INTERNET访问权限。

    Next, we created a simple singleton SendEmailService class. Inside the class, we declared some import statements and initialized a few useful variables.

    接下来,我们创建了一个简单的单例SendEmailService类。 在类内部,我们声明了一些import语句并初始化了一些有用的变量。

    We explored, in-depth, how to create MIME email messages. We have also tried sending a simple text email inside a AsyncTask or ExecutorService.

    我们深入探讨了如何创建MIME电子邮件。 我们还尝试在AsyncTaskExecutorService内发送简单的文本电子邮件。

    Later on, we added image and text attachments to the email as part of the MimeMultipart object.

    稍后,我们将图像和文本附件作为MimeMultipart对象的一部分添加到了电子邮件中。

    Thanks for reading this article. Hope to see you again in the next article!

    感谢您阅读本文。 希望在下一篇文章中再见!

    翻译自: https://medium.com/better-programming/how-to-send-an-email-with-attachments-in-android-b2d75123f7e7

    展开全文
  • 将上两篇Blog综合在一起就OK了。先上传附件,然后把附件在服务器上绝对路径传给发邮件函数,有发邮件函数从该路径提取文件,发送即可。
  • linux 下如何发送带附件的邮件

    千次阅读 2009-02-14 20:27:00
    Q: linux 下如何发送带附件的邮件? A: 如果你可以使用 X window, 那么可以用 netscape 的 mail,也可以使用 kmail,如果的话。如果这两个都不能用,那么可以用 mail命令。 如果你能确认你的邮件服务器支持 8-bit...
  • 继上一篇javamail发邮件的博客接着写,如何实现发送一封带有附件的邮件 直接上代码 import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties...
  • 大家应该都知道了如何使用smtplib和MIMEText轻易地发送一封普通的邮件,而在此基础上今天要分享的是如何构造附件内容,发送一封带有附件的邮件。 需要模块:smtplib和email.MIME 一、 模块介绍: 要完成发送邮件的...
  • nodemailer 附件In the previous article, "How to send emails using Nodemailer?", we discussed how to send simple emails using Nodemailer in Node.js? Here, we are going to learn further – How to send ...
  • <p>I have found this library and have managed to send an attachment in an empty email but not to combine text and attachments. <p><a href=... <p>How can it be done?... </div>
  • Created by Jerry Wang on Feb 15, 2014 the signature of CL_DOCUMENT_BCS~ADD_ATTACHMENT: suppose we already have PDF binary source with type XSTRING, ... 要获取更多Jerry原创文章,请关注公众号"汪子熙":
  • MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计健壮、功能丰富.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特功能,这些控件帮助开发人员简单快速地...
  • 该插件能够传递带有少量文本电子邮件,并能够将当前文档附加为Zip / Compress文件或标准Microsoft Office Word文档文件格式,并从Microsoft Office Word Interface发送电子邮件
  • <p>I have email content with data=> name, email, phone , description and attachment. I am able send the email with all the data to email. But what I want is , Actually I want to send ...
  • NUMPAGES 用PHP发送有附件的电子邮件 我经常听到这样一个问题"我有一个从网站发来的合同我如何给通过表单发送的电子邮件增加一个附件呢"首先我要说的是要做到这个没有什么简单的办法你要很好的理解PHP或其它的服务器...
  • 在网上看到人在使用Outlook时遇到这样的情况,使用Outlook向其他非Outlook邮箱发送邮件,结果对方无法正常收到邮件及附件,取而代之收到的是名字为Winmail.dat文件附件的邮件。一般情况下,这是由于Outlook使用RTF...
  • 本篇文章以QQ邮箱作为发件人写案例演示了不带附件邮件带附件邮件,无论是QQ邮箱还是网易邮箱,操作都一样,只是配置文件配置邮箱服务器与用户和授权码不同问题。 一、获取邮箱授权码 使用SpringBoot发送...
  • 如何使用 Cdosys.dll 库一封新邮件中嵌入一条消息,使用 Visual C#本文描述如何在新邮件中嵌入邮件的 Windows 2000 库 (Cdosys.dll) 中使用 Microsoft 协作数据对象 (CDO)。 可以使用 Microsoft Visual C# 执行此...
  • 网上很多帖子介绍了如何用mutt命令发送邮件,其中也一并发送附件的命令。但这些命令实际上都会报错,在man mutt之后,恍然大悟。 man mutt里是这么说的: -a file [...] Attach a file to your message using ...
  • 上一小节我们实现了基本的邮件发送功能,并且学习了如下知识点; 1. 如何使用 RT-Thread Studio 添加软件包。 2. 如何应对由于项目重新构建导致的参数丢失问题。 3. 如何配置邮件相关参数。 4. 如何修改邮件应用...
  • 使用Jmail发送带附件的mail的时候,如何保证你所发送的mail可以正常显示附件和去除乱码,非常重要的就是一定要把以下这句代码注释掉! jmail.ContentType = "text/html" 邮件的格式为HTML格式兄弟我尝试n次终于...
  • 通过一段代码来说明如何发送一封带有附件的邮件,邮件正文为html并携带图片 注:通过学习传智播客张孝祥老师的视频掌握的。 首先引入javaMail相关的jar包:mailapi.jar、smtp.jar(其中mailapi.jar是...
  • 本文将演示如何使用MessageUI框架,创建并发送一封带有附件的邮件。 使用邮件编辑视图控制器(MFMailComposeViewController)实现邮件功能。 在项目导航区,打开视图控制器的代码文件【ViewController.swift】 1...
  • MailForm Rails 5此宝石建于ActiveModel之上,展示了如何将验证,命名和i18n从Rails引入模型中,而无需自己实现。 本自述文件指是MailForm...说明MailForm允许您直接从表单发送电子邮件。 例如,如果您只想制作联系表
  • 其实使用win32com调用outlook已经很多文章了,但是我发现里面极少介绍正文图片的发送办法,以及如何避免踩坑,今天我把自己心得发一下 import win32com.client as win32 outlook = win32.Dispatch('Outlook....
  • 在IBM Integration Bus中实现内部缓冲区和字符串处理结构的数据类型可能会限制可以在单个消息中处理的数据大小。... 本教程演示了如何使用MTOM和MIME解析器发送和接收具有较大附件的SOAP消息。 2 Gb限制 解...
  • 接收带附件的邮件

    2010-05-07 17:36:49
    带有附件的邮件中,消息的内容是Multipart型,这样我们就需要解析它来得到content和附件(它是发送带附件的邮件的逆向过程)。大家在使用outlook、foxmail这些电子邮件客户端的时候会发现,我们的邮件被从服务器上...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 140
精华内容 56
关键字:

如何发送带有附件的邮件