当前位置: 首页 > 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://www.sadfv.cn/news/280418/

相关文章:

  • 网站建设方案书 5个备案网站怎么更新数据
  • 小说网站 做百度联盟站长工具星空传媒
  • jquery效果网站外贸php网站源码
  • 百度给做网站吗网站优化 推广
  • 安监网站如何做紧急预案备案四川省住房建设厅网站打不开
  • 学校网站html模板wordpress 问卷
  • 网站logo做黑页wordpress 爬虫 视频
  • 免费自己怎么注册网站电竞网站开发需求报告
  • c2c网站购物体验情况登记表课程分销的网站怎么做
  • 怎样建网站邢台哪儿专业做网站
  • 网站架构设计师求职信宁海县做企业网站
  • 西安电脑网站建设515ppt网站建设
  • 企业网站管理系统软件wordpress加搜索框
  • 越秀网站建设优化无锡做网站seo的
  • 温州手机网站制作联系电话抄袭别人网站的前端代码合法吗
  • 许昌做网站公司报价前端框架有哪些
  • 密云区免费网站建设app开发定制公司推荐
  • 台州seo网站排名沈阳今天最新通知
  • 网站建设中有关数据库问题策划书平台建设部分
  • 家里笔记本做网站 怎么解析wordpress主题 餐饮
  • 英语培训学校网站怎么做做网站的内容
  • 买个网站域名要多少钱做网站建设公司crm在线
  • 网站的转盘游戏怎么做WordPress页面固定链接
  • python做网站快么合肥企业网站设计制作
  • 乐平市建设局网站wordpress短代码显示
  • 做展示型企业网站商城建设公司
  • 黔东南州住房和城乡建设局网站大华建设项目管理有限公司网站
  • 郑州网站营销汉狮住房和城乡建设部办公厅
  • 厦门自助建站陕西建工第三建设集团网站
  • 课程网站建设技术网页欣赏网站