5. Lab9 常见问题(MAIL)

5.1. 测试send.c收到的邮件正文为乱码?

发送邮件正文时忘记转换为 base64 编码。

5.2. 测试 recv.c 登录失败?

recv 登录时授权码不需要转换 base64 编码。

5.3. 测试 send.c 终端无输出?

  • host_name 没填对;

  • 发送邮箱名和邮箱授权码时没有在末尾加上回车符\r\n。

5.4. 向服务器发送的命令得不到回复,终端一直在等待?

发送的命令语句后面要加\r\n或 \n,否则服务器不能识别命令。

5.5. 邮件正文为空?

SMTP 只能发送使用 ASCII 码的文本内容,想要传输附件,需要通过 MIME 来提供额外的扩充,然而在 SMTP 中使用 MIME 时,需要额外的定义出一个固定的分隔符,而且格外需要注意的是 MIME 的邮件头是拥有固定的格式字段的,若是对于这些邮件头的填写出现了一点问题,那么服务器在接收到这个邮件的时候就会认为这些东西是乱 码或者是普通的文本,从而出现了这些内容被误解,从而无法正确地发送邮件。

  • 可对比telnet指令的wireshark,查看哪里对不上。

  • 实验要求能发送文本信息和附件,需按照MIME的格式来指定Content-Type为multipart/mixed类型。

  • 注意有部分空行(如在发送context_type后需多加\r\n)并不只是为了美观,而是格式本身的要求。