当前位置: 首页 > news >正文

台州网站公司电子商务网站的建设及规划

台州网站公司,电子商务网站的建设及规划,如何选择昆明网站建设,高端网站建设内容文章目录一、发邮件流程二、关于邮件协议和端口三、开启邮件协议和端口3.1. QQ邮箱3.2. 163邮箱四、实战发送邮件4.1. 引入依赖4.2. 方法重写4.3. 发送邮件核心类工具类EmailUtils五、QQ邮件发送测试5.1. QQ发送测试5.2. 查看QQ发送邮箱5.3. 查看收件人收件箱六、163邮件发送测… 文章目录一、发邮件流程二、关于邮件协议和端口三、开启邮件协议和端口3.1. QQ邮箱3.2. 163邮箱四、实战发送邮件4.1. 引入依赖4.2. 方法重写4.3. 发送邮件核心类工具类EmailUtils五、QQ邮件发送测试5.1. QQ发送测试5.2. 查看QQ发送邮箱5.3. 查看收件人收件箱六、163邮件发送测试6.1. 163发送测试6.2. 查看163发送邮箱6.3. 查看收件人收件箱七、企业需求实战7.1. Email工具类7.2. 单元测试一、发邮件流程 使用javax.mail包中的api发送邮件大致有5个步骤 1、继承Authenticator类重写getPasswordAuthentication方法。用于登录校验。2、创建一个Properties对象用于存放SMTP服务器地址、端口号3、用步骤1和2得到的对象创建一个Session对象相当于邮箱登录4、创建一个MimeMessage设置发件人、收件人、抄送人、主题、内容添加附件5、Transport发送邮件 二、关于邮件协议和端口 常用的电子协议协议有SMTP、POP3、IMAP4它们都隶属于TCP/IP簇默认状态下分别通过TCP端口25、110和143建立连接。 发送邮件基于SMTP协议。下面列出了常用的邮件服务器地址和端口。 sina.com: POP3服务器地址:pop3.sina.com.cn端口110 SMTP服务器地址:smtp.sina.com.cn端口25 sinaVIP POP3服务器:pop3.vip.sina.com 端口110 SMTP服务器:smtp.vip.sina.com 端口25sohu.com: POP3服务器地址:pop3.sohu.com端口110 SMTP服务器地址:smtp.sohu.com端口25126邮箱 POP3服务器地址:pop.126.com端口110 SMTP服务器地址:smtp.126.com端口25139邮箱 POP3服务器地址POP.139.com端口110 SMTP服务器地址SMTP.139.com(端口25)163.com: POP3服务器地址:pop.163.com端口110 SMTP服务器地址:smtp.163.com端口25QQ邮箱 POP3服务器地址pop.qq.com端口110 SMTP服务器地址smtp.qq.com 端口25QQ企业邮箱 POP3服务器地址pop.exmail.qq.com SSL启用 端口995 SMTP服务器地址smtp.exmail.qq.comSSL启用 端口587/465yahoo.com: POP3服务器地址:pop.mail.yahoo.com SMTP服务器地址:smtp.mail.yahoo.comyahoo.com.cn: POP3服务器地址:pop.mail.yahoo.com.cn端口995 SMTP服务器地址:smtp.mail.yahoo.com.cn端口587HotMail POP3服务器地址pop3.live.com 端口995 SMTP服务器地址smtp.live.com 端口587gmail(google.com) POP3服务器地址:pop.gmail.comSSL启用 端口995 SMTP服务器地址:smtp.gmail.comSSL启用 端口587263.net: POP3服务器地址:pop3.263.net端口110 SMTP服务器地址:smtp.263.net端口25263.net.cn: POP3服务器地址:pop.263.net.cn端口110 SMTP服务器地址:smtp.263.net.cn端口25x263.net: POP3服务器地址:pop.x263.net端口110 SMTP服务器地址:smtp.x263.net端口2521cn.com: POP3服务器地址:pop.21cn.com端口110 SMTP服务器地址:smtp.21cn.com端口25Foxmail POP3服务器地址:POP.foxmail.com端口110 SMTP服务器地址:SMTP.foxmail.com端口25china.com: POP3服务器地址:pop.china.com端口110 SMTP服务器地址:smtp.china.com端口25tom.com: POP3服务器地址:pop.tom.com端口110 SMTP服务器地址:smtp.tom.com端口25etang.com: POP3服务器地址:pop.etang.com SMTP服务器地址:smtp.etang.com三、开启邮件协议和端口 3.1. QQ邮箱 3.2. 163邮箱 四、实战发送邮件 4.1. 引入依赖 dependencygroupIdjavax.mail/groupIdartifactIdmail/artifactIdversion1.4/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.9/versionscopetest/scope/dependency4.2. 方法重写 继承Authenticator并重写getPasswordAuthentication方法 package com.gblfy.mail;import javax.mail.Authenticator; import javax.mail.PasswordAuthentication;public class MyAuthenticator extends Authenticator {String userName null;String password null;public MyAuthenticator() {}public MyAuthenticator(String username, String password) {this.userName username;this.password password;}protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(userName, password);} }4.3. 发送邮件核心类工具类EmailUtils package com.gblfy.mail.util;import com.gblfy.mail.MyAuthenticator;import javax.activation.CommandMap; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.activation.MailcapCommandMap; import javax.mail.*; import javax.mail.internet.*; import java.util.List; import java.util.Properties;/*** 使用javax.mail发送邮件** author: gblfy* date 2021-06-22** p* 参数列表:* 1.邮件服务器* 2.发件人邮箱* 3.发件人的授权密码* 4.邮件主题* 5.收件人多个收件人以半角逗号分隔* 6.抄送多个抄送以半角逗号分隔* 7.正文可以用html格式的哟* /p*/ public class EmailUtils {private String smtpHost; // 邮件服务器地址private String sendUserName; // 发件人的用户名private String sendUserPass; // 发件人密码private MimeMessage mimeMsg; // 邮件对象private Multipart mp;// 附件添加的组件private void init() {// 创建一个密码验证器MyAuthenticator authenticator null;authenticator new MyAuthenticator(sendUserName, sendUserPass);// 实例化Properties对象Properties props System.getProperties();props.put(mail.smtp.host, smtpHost);props.put(mail.smtp.auth, true); // 需要身份验证props.put(mail.smtp.starttls.enable, true);// 建立会话Session session Session.getDefaultInstance(props, authenticator);// 置true可以在控制台console)上看到发送邮件的过程session.setDebug(true);// 用session对象来创建并初始化邮件对象mimeMsg new MimeMessage(session);// 生成附件组件的实例mp new MimeMultipart();}private EmailUtils(String smtpHost, String sendUserName, String sendUserPass, String to, String cc, String mailSubject,String mailBody, ListString attachments) {this.smtpHost smtpHost;this.sendUserName sendUserName;this.sendUserPass sendUserPass;init();setFrom(sendUserName);setTo(to);setCC(cc);setBody(mailBody);setSubject(mailSubject);if (attachments ! null) {for (String attachment : attachments) {addFileAffix(attachment);}}}/*** 邮件实体** param smtpHost 邮件服务器地址* param sendUserName 发件邮件地址* param sendUserPass 发件邮箱密码* param to 收件人多个邮箱地址以半角逗号分隔* param cc 抄送多个邮箱地址以半角逗号分隔* param mailSubject 邮件主题* param mailBody 邮件正文* param attachments 附件路径* return*/public static EmailUtils entity(String smtpHost, String sendUserName, String sendUserPass, String to, String cc,String mailSubject, String mailBody, ListString attachments) {return new EmailUtils(smtpHost, sendUserName, sendUserPass, to, cc, mailSubject, mailBody, attachments);}/*** 设置邮件主题** param mailSubject* return*/private boolean setSubject(String mailSubject) {try {mimeMsg.setSubject(mailSubject);} catch (Exception e) {return false;}return true;}/*** 设置邮件内容,并设置其为文本格式或HTML文件格式编码方式为UTF-8** param mailBody* return*/private boolean setBody(String mailBody) {try {BodyPart bp new MimeBodyPart();bp.setContent(meta http-equivContent-Type contenttext/html; charsetUTF-8 mailBody,text/html;charsetUTF-8);// 在组件上添加邮件文本mp.addBodyPart(bp);} catch (Exception e) {System.err.println(设置邮件正文时发生错误 e);return false;}return true;}/*** 添加一个附件** param filename 邮件附件的地址只能是本机地址而不能是网络地址否则抛出异常* return*/public boolean addFileAffix(String filename) {try {if (filename ! null filename.length() 0) {BodyPart bp new MimeBodyPart();FileDataSource fileds new FileDataSource(filename);bp.setDataHandler(new DataHandler(fileds));bp.setFileName(MimeUtility.encodeText(fileds.getName(), utf-8, null)); // 解决附件名称乱码mp.addBodyPart(bp);// 添加附件}} catch (Exception e) {System.err.println(增加邮件附件 filename 发生错误 e);return false;}return true;}/*** 设置发件人地址** param from 发件人地址* return*/private boolean setFrom(String from) {try {mimeMsg.setFrom(new InternetAddress(from));} catch (Exception e) {return false;}return true;}/*** 设置收件人地址** param to 收件人的地址* return*/private boolean setTo(String to) {if (to null)return false;try {mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));} catch (Exception e) {return false;}return true;}/*** 设置抄送** param cc* return*/private boolean setCC(String cc) {if (cc null) {return false;}try {mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));} catch (Exception e) {return false;}return true;}/*** no object DCH for MIME type multipart/mixed报错解决*/private void solveError() {MailcapCommandMap mc (MailcapCommandMap) CommandMap.getDefaultCommandMap();mc.addMailcap(text/html;; x-java-content-handlercom.sun.mail.handlers.text_html);mc.addMailcap(text/xml;; x-java-content-handlercom.sun.mail.handlers.text_xml);mc.addMailcap(text/plain;; x-java-content-handlercom.sun.mail.handlers.text_plain);mc.addMailcap(multipart/*;; x-java-content-handlercom.sun.mail.handlers.multipart_mixed; x-java-fallback-entrytrue);mc.addMailcap(message/rfc822;; x-java-content-handlercom.sun.mail.handlers.message_rfc822);CommandMap.setDefaultCommandMap(mc);Thread.currentThread().setContextClassLoader(EmailUtils.class.getClassLoader());}/*** 发送邮件** return*/public boolean send() throws Exception {mimeMsg.setContent(mp);mimeMsg.saveChanges();System.out.println(正在发送邮件....);solveError();Transport.send(mimeMsg);System.out.println(发送邮件成功);return true;} } 五、QQ邮件发送测试 5.1. QQ发送测试 package com.gblfy.mail;import com.gblfy.mail.util.EmailUtils; import org.junit.Test;import java.util.Arrays; import java.util.List;public class MailApplicationTests {Testpublic void sendEmail() throws Exception {//QQ邮箱测试String userName 754263923qq.com; // 发件人邮箱String password wzxsscqpvrikbbfa; // 发件人密码其实不一定是邮箱的登录密码对于QQ邮箱来说是SMTP服务的授权文本String smtpHost smtp.qq.com; // 邮件服务器//163邮箱测试// String userName gblfy02163.com; // 发件人邮箱// String password TBFJUSKCUOPEYOYU; // 发件人密码其实不一定是邮箱的登录密码对于QQ邮箱来说是SMTP服务的授权文本// String smtpHost smtp.163.com; // 邮件服务器String to guo_binsinosoft.com.cn; // 收件人多个收件人以半角逗号分隔String cc songzihaosinosoft.com.cn; // 抄送多个抄送以半角逗号分隔String subject 这是邮件的主题 163; // 主题String body 这是邮件的正文163; // 正文可以用html格式的哟ListString attachments Arrays.asList(D:\\安装包\\【繁星课堂】DataX3.0离线同步课件.pdf, D:\\安装包\\权限控制优化需求.docx); // 附件的路径多个附件也不怕EmailUtils emailUtils EmailUtils.entity(smtpHost, userName, password, to, cc, subject, body, attachments);emailUtils.send(); // 发送}} 5.2. 查看QQ发送邮箱 5.3. 查看收件人收件箱 正常发送正常接收 六、163邮件发送测试 6.1. 163发送测试 package com.gblfy.mail;import com.gblfy.mail.util.EmailUtils; import org.junit.Test;import java.util.Arrays; import java.util.List;public class MailApplicationTests {Testpublic void sendEmail() throws Exception {//QQ邮箱测试// String userName 754263923qq.com; // 发件人邮箱// String password wzxsscqpvrikbbfa; // 发件人密码其实不一定是邮箱的登录密码对于QQ邮箱来说是SMTP服务的授权文本// String smtpHost smtp.qq.com; // 邮件服务器//163邮箱测试String userName gblfy02163.com; // 发件人邮箱String password TBFJUSKCUOPEYOYU; // 发件人密码其实不一定是邮箱的登录密码对于QQ邮箱来说是SMTP服务的授权文本String smtpHost smtp.163.com; // 邮件服务器String to guo_binxxx.com.cn; // 收件人多个收件人以半角逗号分隔String cc songzihaoxxx.com.cn; // 抄送多个抄送以半角逗号分隔String subject 这是邮件的主题 163; // 主题String body 这是邮件的正文163; // 正文可以用html格式的哟ListString attachments Arrays.asList(D:\\安装包\\【繁星课堂】DataX3.0离线同步课件.pdf, D:\\安装包\\权限控制优化需求.docx); // 附件的路径多个附件也不怕EmailUtils emailUtils EmailUtils.entity(smtpHost, userName, password, to, cc, subject, body, attachments);emailUtils.send(); // 发送}} 6.2. 查看163发送邮箱 6.3. 查看收件人收件箱 七、企业需求实战 7.1. Email工具类 package com.gblfy.email.util;import com.gblfy.email.config.EmailAuthenticatorConfig;import javax.activation.CommandMap; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.activation.MailcapCommandMap; import javax.mail.*; import javax.mail.internet.*; import java.util.List; import java.util.Properties;/*** 使用javax.mail发送邮件** author: gblfy* date 2021-10-15** p* 参数列表:* 1.邮件服务器* 2.发件人邮箱* 3.发件人的授权密码* 4.邮件主题* 5.收件人多个收件人以半角逗号分隔* 6.抄送多个抄送以半角逗号分隔* 7.正文可以用html格式的哟* /p*/ public class EmailUtils {private String smtpHost; // 邮件服务器地址private String sendUserName; // 发件人的用户名private String sendUserPass; // 发件人密码private MimeMessage mimeMsg; // 邮件对象private Multipart mp;// 附件添加的组件private void init() {// 创建一个密码验证器EmailAuthenticatorConfig authenticator null;authenticator new EmailAuthenticatorConfig(sendUserName, sendUserPass);// 实例化Properties对象Properties props System.getProperties();props.put(mail.smtp.host, smtpHost);props.put(mail.smtp.auth, true); // 需要身份验证//此属性待测试先注释// props.put(mail.smtp.starttls.enable, true);props.put(mail.transport.protocol, smtp);// 建立会话Session session Session.getDefaultInstance(props, authenticator);// 置true可以在控制台console)上看到发送邮件的过程session.setDebug(true);// 用session对象来创建并初始化邮件对象mimeMsg new MimeMessage(session);// 生成附件组件的实例mp new MimeMultipart();}private EmailUtils(String smtpHost, String sendUserName, String sendUserPass, String to, String cc, String mailSubject,String mailBody, ListString attachments) {this.smtpHost smtpHost;this.sendUserName sendUserName;this.sendUserPass sendUserPass;init();setFrom(sendUserName);setTo(to);setCC(cc);setBody(mailBody);setSubject(mailSubject);if (attachments ! null) {for (String attachment : attachments) {addFileAffix(attachment);}}}/*** 邮件实体** param smtpHost 邮件服务器地址* param sendUserName 发件邮件地址* param sendUserPass 发件邮箱密码* param to 收件人多个邮箱地址以半角逗号分隔* param cc 抄送多个邮箱地址以半角逗号分隔* param mailSubject 邮件主题* param mailBody 邮件正文* param attachments 附件路径* return*/public static EmailUtils entity(String smtpHost, String sendUserName, String sendUserPass, String to, String cc,String mailSubject, String mailBody, ListString attachments) {return new EmailUtils(smtpHost, sendUserName, sendUserPass, to, cc, mailSubject, mailBody, attachments);}/*** 设置邮件主题** param mailSubject* return*/private boolean setSubject(String mailSubject) {try {mimeMsg.setSubject(mailSubject);} catch (Exception e) {return false;}return true;}/*** 设置邮件内容,并设置其为文本格式或HTML文件格式编码方式为UTF-8** param mailBody* return*/private boolean setBody(String mailBody) {try {BodyPart bp new MimeBodyPart();bp.setContent(meta http-equivContent-Type contenttext/html; charsetUTF-8 mailBody,text/html;charsetUTF-8);// 在组件上添加邮件文本mp.addBodyPart(bp);} catch (Exception e) {System.err.println(设置邮件正文时发生错误 e);return false;}return true;}/*** 添加一个附件** param filename 邮件附件的地址只能是本机地址而不能是网络地址否则抛出异常* return*/public boolean addFileAffix(String filename) {try {if (filename ! null filename.length() 0) {BodyPart bp new MimeBodyPart();FileDataSource fileds new FileDataSource(filename);bp.setDataHandler(new DataHandler(fileds));bp.setFileName(MimeUtility.encodeText(fileds.getName(), utf-8, null)); // 解决附件名称乱码mp.addBodyPart(bp);// 添加附件}} catch (Exception e) {System.err.println(增加邮件附件 filename 发生错误 e);return false;}return true;}/*** 设置发件人地址** param from 发件人地址* return*/private boolean setFrom(String from) {try {mimeMsg.setFrom(new InternetAddress(from));} catch (Exception e) {return false;}return true;}/*** 设置收件人地址** param to 收件人的地址* return*/private boolean setTo(String to) {if (to null)return false;try {mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));} catch (Exception e) {return false;}return true;}/*** 设置抄送** param cc* return*/private boolean setCC(String cc) {if (cc null) {return false;}try {mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));} catch (Exception e) {return false;}return true;}/*** no object DCH for MIME type multipart/mixed报错解决*/private void solveError() {MailcapCommandMap mc (MailcapCommandMap) CommandMap.getDefaultCommandMap();mc.addMailcap(text/html;; x-java-content-handlercom.sun.mail.handlers.text_html);mc.addMailcap(text/xml;; x-java-content-handlercom.sun.mail.handlers.text_xml);mc.addMailcap(text/plain;; x-java-content-handlercom.sun.mail.handlers.text_plain);mc.addMailcap(multipart/*;; x-java-content-handlercom.sun.mail.handlers.multipart_mixed; x-java-fallback-entrytrue);mc.addMailcap(message/rfc822;; x-java-content-handlercom.sun.mail.handlers.message_rfc822);CommandMap.setDefaultCommandMap(mc);Thread.currentThread().setContextClassLoader(EmailUtils.class.getClassLoader());}/*** 发送邮件** return*/public String send() throws Exception {mimeMsg.setContent(mp);mimeMsg.saveChanges();System.out.println(正在发送邮件....);solveError();try {Transport.send(mimeMsg);return 发送邮件成功;} catch (MessagingException e) {e.printStackTrace();return 发送邮件异常;}}/*** 对账结果通知邮件模板** param named 称呼* param totalNum 对账批次总个数* param succBatchNum 对账成功批次个数* param checkInformSucc 对账成功批次* param checkInformMiddle 对账中批次* param checkInformDiff 对账差异批次* param smtpHost 邮件代理服务器IP* param sendUserName 发送人邮箱* param sendUserPass 发送人邮箱秘钥* param to 收件人邮箱* param cc 抄送人邮箱* param attachments 附件*/public static String checkInformEmailNotice(String named, int totalNum, int succBatchNum, String checkInformSucc,String checkInformMiddle, String checkInformDiff, String smtpHost,String sendUserName, String sendUserPass, String to, String cc,ListString attachments) throws Exception {String subject 【装载结果通知】 DateDeal.getYesterday() 共报送 totalNum 个批次对账成功 succBatchNum 个批次; // 主题String body pre\n named 您好!\n \n 对账状态信息\n 对账成功批次 checkInformSucc 。\n 对账中批次 checkInformMiddle ,请您及时处理。\n 对账存在差异批次 checkInformDiff ,请您及时处理。\n /pre;EmailUtils emailUtils EmailUtils.entity(smtpHost, sendUserName, sendUserPass, to, cc, subject, body, attachments);return emailUtils.send();// 发送}/*** param named 称呼* param totalLoadNum 装载总批次个数* param loadAllSuccNum 装载全部成功批次个数* param loadMiddle 装载中批次* param LoadAllSucc 装载全部成功批次* param partLoadSucc 装载部分成功批次* param withoutLoad 尚未装载批次* param smtpHost 邮件代理服务器IP* param sendUserName 发送人邮箱* param sendUserPass 发送人邮箱秘钥* param to 收件人邮箱* param cc 抄送人邮箱* param attachments 附件* return* throws Exception*/public static String loadEmailNotice(String named, int totalLoadNum, int loadAllSuccNum, String loadMiddle, String LoadAllSucc,String partLoadSucc, String withoutLoad, String smtpHost,String sendUserName, String sendUserPass, String to, String cc,ListString attachments) throws Exception {String subject 【数据装载结果通知】 DateDeal.getToday() 共报送 totalLoadNum 个批次装载全部成功 loadAllSuccNum 个批次; // 主题String body pre\n named 您好!\n \n 数据装载状态信息\n 装载中批次 loadMiddle 。\n 装载全部成功批次 LoadAllSucc 。\n 装载部分成功批次 partLoadSucc \n 尚未装载批次 withoutLoad 。\n /pre;EmailUtils emailUtils EmailUtils.entity(smtpHost, sendUserName, sendUserPass, to, cc, subject, body, attachments);return emailUtils.send();// 发送} }7.2. 单元测试 package com.gblfy.email.util;import com.gblfy.email.modular.check.dto.Emailsubject; import org.junit.Test;public class EmailTest {Testpublic void checkInformEmailNoticeTest() throws Exception {//测试模拟数据Emailsubject emailsubject new Emailsubject();emailsubject.setSendEmail(xxxxxx.com);emailsubject.setProxyserverHost(192.168.xxx.xxx);emailsubject.setSendEmailPwd(Gblfy.com);emailsubject.setReceiveEmail(xxxxxx.com);emailsubject.setCcEmail(xxxxxx.com,xxxxxx.com,xxxxxx.com,xxxxxx.com);String msg EmailUtils.checkInformEmailNotice(运维人员, 5, 5, 001,002,0002, 004,00005 , emailsubject.getProxyserverHost(),emailsubject.getSendEmail(), emailsubject.getSendEmailPwd(), emailsubject.getReceiveEmail(), emailsubject.getCcEmail(), null);System.out.println(msg msg);}Testpublic void loadEmailNoticeTest() throws Exception {//测试模拟数据Emailsubject emailsubject new Emailsubject();emailsubject.setSendEmail(xxxxxx.com);emailsubject.setProxyserverHost(192.168.xxx.xxx);emailsubject.setSendEmailPwd(Gblfy.com);emailsubject.setReceiveEmail(xxxxxx.com);emailsubject.setCcEmail(xxxxxx.com,xxxxxx.com,xxxxxx.com,xxxxxx.com);String msg EmailUtils.loadEmailNotice(运维人员, 5, 5, 001,002,003, 004,0005 , 008, emailsubject.getProxyserverHost(),emailsubject.getSendEmail(), emailsubject.getSendEmailPwd(), emailsubject.getReceiveEmail(), emailsubject.getCcEmail(), null);System.out.println(msg msg);} }
http://wiki.neutronadmin.com/news/280418/

相关文章:

  • 宁波seo排名方案优化搜索引擎优化的报告
  • 外贸平台哪个网站最好不收费企业oa办公系统大概多少钱一套
  • 做网站应该注意哪些问题做电视的视频网站
  • 建设个人网站赚钱的经历黄页号码标记申诉
  • 安徽网站优化好不好wordpress索引
  • 深圳企业网站建设报价php+mysql网站开发
  • 做房产中介需要有内部网站吗wordpress 电商
  • 品牌的三大核心价值无锡网站排名优化费用
  • 重庆建站公司费用网站备案号的区别
  • 给城市建设提议献策的网站字体设计作品赏析
  • 如何做手机网站用于建设教学网站的建站工具有哪些特点
  • 杭州久邦电力建设有限公司网站手机排行榜2021前十名性价比
  • 手机网站免费制作平台有哪些江东seo做关键词优化
  • chrome网站开发插件舟山市建设信息港网站打不开
  • 怎样建设企业网站做网站十大公司哪家好
  • 电子请柬网站开发竞赛作品发表网站怎么做
  • 淄博网站建设公司有几家深圳公共交易资源平台
  • 注销建设工程规划许可证在哪个网站百度推广一个月多少钱
  • 建立网站心得自己怎么做网站建设
  • 莱州网站建设方案广告公司名称创意
  • 网站登记备案查询网站建设人员工资
  • 菏砖网站建设网站建设费进什么科目
  • 广西建设监理协会官网站wordpress禁用媒体库
  • 网站工程师简历专业返利网站建设
  • 招聘网站是做什麼的hao123网址下载到桌面
  • oracle 网站开发有限公司和公司哪个好
  • 凤岗网站建设西安seo工作室
  • 网站续费会计分录怎样做网站模板和定制的区别
  • 成都网站建设索q479185700内容营销的4个主要方式
  • 扁平化网站下载网络版微信