{"id":309002,"date":"2020-08-25T15:02:01","date_gmt":"2020-08-25T15:02:01","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=309002"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=309002","title":{"rendered":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Gmail API \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f PHP IMAP \u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 OAuth2"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/516408\/\">\u041e\u043a\u0430\u0437\u0430\u0432\u0448\u0438\u0441\u044c \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u0447\u0438\u043a\u043e\u0432, \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0441 15 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2021 \u0433\u043e\u0434\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432 Gmail \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 OAuth, \u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u044e &quot;<a href=\"https:\/\/habr.com\/ru\/post\/481786\/\">Google \u0445\u043e\u0440\u043e\u043d\u0438\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 PHP IMAP<\/a>&quot; \u0438 <s>\u0437\u0430\u0433\u0440\u0443\u0441\u0442\u0438\u043b<\/s> \u043d\u0430\u0447\u0430\u043b \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e \u0437\u0430\u043c\u0435\u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f PHP IMAP \u0432 \u0441\u0432\u043e\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0430 API Google. \u0412\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0431\u044b\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043e\u0442\u0432\u0435\u0442\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043e\u0434\u043d\u043e \u043d\u0430\u0446\u0430\u0440\u0430\u043f\u0430\u043b \u043c\u0430\u043d\u0443\u0430\u043b.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0423 \u043c\u0435\u043d\u044f PHP IMAP \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u0434\u0430\u0447:<\/p>\n<ol>\n<li><b>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u043f\u0438\u0441\u0435\u043c \u0438\u0437 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432<\/b>. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u043c G Suite \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0440\u043e\u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043f\u0438\u0441\u0435\u043c \u0438\u0437 \u0432\u0441\u0435\u0445 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 N \u0434\u043d\u0435\u0439 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f. \u041c\u043d\u0435 \u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u0438\u0441\u044c\u043c\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u0430\u0445 \u0438 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0440\u0430\u0437\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043d\u0435\u0439 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f.<\/li>\n<li><b>\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f, \u0440\u0430\u0437\u0431\u043e\u0440 \u0438 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0438\u0441\u0435\u043c<\/b>. \u0421 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0438\u0441\u0435\u043c, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0434\u043e\u0445\u043e\u0434\u044f\u0442 \u0434\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u0442\u043e\u0432, \u043e \u0447\u0451\u043c, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u043e\u0442\u0447\u0451\u0442\u044b. \u041d\u0443\u0436\u043d\u043e \u044d\u0442\u0438 \u043e\u0442\u0447\u0451\u0442\u044b \u043e\u0442\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e email \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0442\u043e\u0442 \u0441\u0432\u044f\u0437\u0430\u043b\u0441\u044f \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438 \u0443\u0442\u043e\u0447\u043d\u0438\u043b \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b.<\/li>\n<\/ol>\n<p>  \u042d\u0442\u0438 \u0434\u0432\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u044b \u0438 \u0431\u0443\u0434\u0435\u043c \u0440\u0435\u0448\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 API Gmail \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 (\u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043b\u044f \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b PHP IMAP, \u0438, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0441\u0442\u0440\u0430\u0448\u043d\u044b\u0439 \u0434\u0435\u043d\u044c \u0432 \u0444\u0435\u0432\u0440\u0430\u043b\u0435 2021). \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Gmail, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0434\u0430\u0451\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u043c \u044f\u0449\u0438\u043a\u0430\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432 \u043d\u0438\u0445 \u043b\u044e\u0431\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.<\/p>\n<h4>1. \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 Google API<\/h4>\n<p>  \u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u044b \u0438 \u0431\u0443\u0434\u0435\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c API-\u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 Gmail, \u0438 \u0432 \u043d\u0451\u043c \u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442.<\/p>\n<p>  \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<ol>\n<li>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 <a href=\"https:\/\/console.developers.google.com\/\" rel=\"nofollow\">\u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 Google API<\/a> \u0438 \u043b\u043e\u0433\u0438\u043d\u0438\u043c\u0441\u044f \u043f\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c G Suite (\u043d\u0443 \u0438\u043b\u0438 \u043a\u0442\u043e \u0443 \u0412\u0430\u0441 \u0442\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438)<\/li>\n<li>\u0418\u0449\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u00bb.\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u042f \u043d\u0430\u0448\u0451\u043b \u0437\u0434\u0435\u0441\u044c:<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0c3\/bf0\/634\/0c3bf0634a2fc4a7ed7e7753b8b96073.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0418 \u0437\u0430\u0442\u0435\u043c \u0437\u0434\u0435\u0441\u044c:<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/827\/3b6\/589\/8273b65894178caf87f43e6a98d1db0f.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0438\u043c\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b9e\/29b\/12f\/b9e29b12f44ca81e389076c4275fcaf1.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  <\/li>\n<li>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c API \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b\u00bb:\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c API \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/36b\/362\/654\/36b36265472de6a1735a84977937fd5a.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c Gmail API  <\/li>\n<\/ol>\n<p>  <\/p>\n<h4>2. \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442<\/h4>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <a href=\"https:\/\/developers.google.com\/identity\/protocols\/oauth2\/service-account\" rel=\"nofollow\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0430\u043d\u0443\u0430\u043b\u043e\u043c<\/a> \u0438\u043b\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435:<\/p>\n<ol>\n<li>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0430\u0448 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 Gmail API, \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435\u00bb \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u00ab\u0421\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u00bb:\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a42\/525\/387\/a425253878f3a13b9e6aad01709e86fc.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  \u0427\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00ab\u0421\u043e\u0437\u0434\u0430\u0442\u044c\u00bb:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u043c \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/976\/e34\/cb0\/976e34cb068662c61a6fa71987037fff.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/3b2\/c15\/253\/3b2c15253e154b8d36c3029d994ac67b.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u043c\u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0fe\/c84\/a98\/0fec84a9880aeb7d040d5a8143a810e9.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  <\/li>\n<li>\u0414\u0430\u043b\u0435\u0435, \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u043c\u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u043d\u0443\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u043c\u0438 \u044f\u0449\u0438\u043a\u0430\u043c\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f G Suite, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043f\u0443\u043d\u043a\u0442 \u00ab\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u2014 \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 API\u00bb.\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 API<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/135\/624\/7d6\/1356247d6ebbb47d9b7607699d027963.jpg\" alt=\"image\"><br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/acb\/236\/063\/acb2360632fb75ff89ca4515aba2a56e.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  <\/li>\n<li>\u041f\u0440\u043e\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u043d\u0438\u0437 \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0443\u043d\u043a\u0442 \u00ab\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0432 \u0434\u043e\u043c\u0435\u043d\u0435\u00bb:\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0414\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0432 \u0434\u043e\u043c\u0435\u043d\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/042\/fae\/eea\/042faeeeab54579e55f0d25649769fe6.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00ab\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c\u00bb, \u0432 \u043f\u043e\u043b\u0435 \u00ab\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u00bb \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430, \u0430 \u043f\u043e\u043b\u0435 \u00ab\u041e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f OAuth\u00bb \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u0430\u0432\u0430 \u2014 \u043e\u0434\u043d\u043e \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e:<\/p>\n<p>  <code>- https:\/\/mail.google.com\/ - \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430<br \/>  - https:\/\/www.googleapis.com\/auth\/gmail.modify - \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u043a<br \/>  - https:\/\/www.googleapis.com\/auth\/gmail.readonly - \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f<br \/>  - https:\/\/www.googleapis.com\/auth\/gmail.metadata - \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c<\/code><\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u043c \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/6ad\/a90\/589\/6ada9058928da89a02becd55890824c4.jpg\" alt=\"image\"><br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/82f\/a75\/8cb\/82fa758cb0fbdb920d1ce06b1b5f4725.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  <\/li>\n<li>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0449\u0443\u044e \u0433\u0430\u043b\u043a\u0443 \u00ab\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0432 \u0434\u043e\u043c\u0435\u043d\u0435 G Suite\u00bb:\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u0442\u0430\u0442\u0443\u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/adc\/a1b\/677\/adca1b677a8100c2c6c50f081b3ac4c3.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  \u0410 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0412\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 \u0432 \u043f\u043e\u043b\u0435 \u043d\u0438\u0436\u0435.  <\/li>\n<li>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430: \u044d\u0442\u043e \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u0412\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438. \u041e\u043d, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438.\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u00ab\u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435\u00bb \u0412\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u00ab\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u043c\u0438 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c\u0438\u00bb:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2f3\/25c\/dac\/2f325cdac3fc5289a31e18efb5332527.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u00ab\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u2014 \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447\u00bb, \u0442\u0438\u043f: JSON:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u043c\u0438 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/591\/fab\/bb0\/591fabbb05198c2752fffbf2d316724d.jpg\" alt=\"image\">  <\/div>\n<\/p><\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0441\u043a\u0430\u0447\u0430\u043d \u043d\u0430 \u0412\u0430\u0448 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0444\u0430\u0439\u043b \u043a\u043b\u044e\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0434\u0430\u0442\u044c \u043a \u043d\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 API Gmail.  <\/li>\n<\/ol>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 API Gmail \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430, \u0434\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0435\u0433\u043e \u043a\u0430\u043a\u0430-\u043a\u043e\u0434\u0430, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0440\u0435\u0448\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c IMAP PHP.<\/p>\n<h4>3. \u041f\u0438\u0448\u0435\u043c \u043a\u043e\u0434<\/h4>\n<p>  \u041f\u043e API Gmail \u0435\u0441\u0442\u044c \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f (<a href=\"https:\/\/developers.google.com\/gmail\/api\/quickstart\/php?authuser=3\" rel=\"nofollow\">\u043a\u043b\u0438\u043a<\/a> \u0438 <a href=\"https:\/\/developers.google.com\/gmail\/api\/reference\/rest\" rel=\"nofollow\">\u043a\u043b\u0438\u043a<\/a>), \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f. \u041d\u043e \u0440\u0430\u0437 \u0443\u0436 \u0432\u0437\u044f\u043b\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u043c\u0430\u043d\u0443\u0430\u043b, \u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0443 \u0438 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u043a\u0430-\u043a\u043e\u0434.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Google Client Library (apiclient) \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 composer:<\/p>\n<p>  <code>composer require google\/apiclient<\/code><\/p>\n<p>  (\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f, \u043a\u0430\u043a \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u0439 \u0431\u0443\u043a\u0432\u043e\u0435\u0434, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0435\u0440\u0441\u0438\u044e 2.0 api-\u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 <a href=\"https:\/\/developers.google.com\/gmail\/api\/quickstart\/php?authuser=3#step_2_install_the_google_client_library\" rel=\"nofollow\">PHP Quickstart<\/a>, \u043d\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043d\u0430 PHP 7.4 \u043f\u043e\u0441\u044b\u043f\u0430\u043b\u0438\u0441\u044c \u0432\u0441\u044f\u043a\u0438\u0435 \u0432\u043e\u0440\u043d\u0438\u043d\u0433\u0438 \u0438 \u0430\u043b\u0430\u0440\u043c\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0412\u0430\u043c \u0442\u0430\u043a \u0436\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e)<\/p>\n<p>  \u0417\u0430\u0442\u0435\u043c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438\u0437 <a href=\"https:\/\/developers.google.com\/gmail\/api\/reference\/rest\" rel=\"nofollow\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> \u043f\u0438\u0448\u0435\u043c \u0441\u0432\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Gmail, \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u043b\u044e\u0447\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Gmail<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"php\">&lt;?php \/\/ \u041a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Gmail class GmailAPI {     private $credentials_file = __DIR__ . '\/..\/Gmail\/credentials.json'; \/\/ \u041a\u043b\u044e\u0447 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430      \/\/ ---------------------------------------------------------------------------------------------     \/**      * \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 Google_Service_Gmail Authorized Gmail API instance      *      * @param  string $strEmail \u041f\u043e\u0447\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f      * @return Google_Service_Gmail Authorized Gmail API instance      * @throws Exception      *\/     function getService(string $strEmail){         \/\/ \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c\u0443 \u044f\u0449\u0438\u043a\u0443         try{             $client = new Google_Client();             $client-&gt;setAuthConfig($this-&gt;credentials_file);             $client-&gt;setApplicationName('My Super Project');             $client-&gt;setScopes(Google_Service_Gmail::MAIL_GOOGLE_COM);             $client-&gt;setSubject($strEmail);             $service = new Google_Service_Gmail($client);         }catch (Exception $e) {             throw new \\Exception('\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 getService: '.$e-&gt;getMessage());         }         return $service;     }     \/\/ ---------------------------------------------------------------------------------------------      \/**      * \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 ID \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u044f\u0449\u0438\u043a\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f      *      * @param  Google_Service_Gmail $service Authorized Gmail API instance.      * @param  string $strEmail \u041f\u043e\u0447\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f      * @param  array $arrOptionalParams \u043b\u044e\u0431\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043f\u0438\u0441\u0435\u043c      * \u0418\u0437 \u043d\u0438\u0445 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 Gmail \u0432\u0438\u0434\u0430 after: 2020\/08\/20 in:inbox label:      * \u0438 \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0435\u0451 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e q \u043c\u0430\u0441\u0441\u0438\u0432\u0430 $opt_param      * @return array \u041c\u0430\u0441\u0441\u0438\u0432 ID \u043f\u0438\u0441\u0435\u043c \u0438\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432 \u043e\u0448\u0438\u0431\u043e\u043a array('arrErrors' =&gt; $arrErrors), \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c      * @throws Exception      *\/     function listMessageIDs(Google_Service_Gmail $service, string $strEmail, array $arrOptionalParams = array()) {         $arrIDs = array(); \/\/ \u041c\u0430\u0441\u0441\u0438\u0432 ID \u043f\u0438\u0441\u0435\u043c          $pageToken = NULL; \/\/ \u0422\u043e\u043a\u0435\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c \u044f\u0449\u0438\u043a\u0435         $messages = array(); \/\/ \u041c\u0430\u0441\u0441\u0438\u0432 \u043f\u0438\u0441\u0435\u043c \u0432 \u044f\u0449\u0438\u043a\u0435          \/\/ \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u044b\u0431\u043e\u0440\u043a\u0438         $opt_param = array();         \/\/ \u0415\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0435\u0441\u0442\u044c, \u0434\u0435\u043b\u0430\u0435\u043c \u0438\u0437 \u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 Gmail \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0451 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e q         if (count($arrOptionalParams)) $opt_param['q'] = str_replace('=', ':', http_build_query($arrOptionalParams, null, ' '));          \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0438\u0441\u0435\u043c, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044e \u0432\u044b\u0431\u043e\u0440\u043a\u0438, \u0441\u043e \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430         do {             try {                 if ($pageToken) {                     $opt_param['pageToken'] = $pageToken;                 }                 $messagesResponse = $service-&gt;users_messages-&gt;listUsersMessages($strEmail, $opt_param);                 if ($messagesResponse-&gt;getMessages()) {                     $messages = array_merge($messages, $messagesResponse-&gt;getMessages());                     $pageToken = $messagesResponse-&gt;getNextPageToken();                 }             } catch (Exception $e) {                 throw new \\Exception('\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 listMessageIDs: '.$e-&gt;getMessage());             }         } while ($pageToken);          \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 ID \u044d\u0442\u0438\u0445 \u043f\u0438\u0441\u0435\u043c         if (count($messages)) {             foreach ($messages as $message) {                 $arrIDs[] = $message-&gt;getId();             }         }         return $arrIDs;     }     \/\/ ---------------------------------------------------------------------------------------------      \/**      * \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u0445 ID \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 batchDelete      *      * @param  Google_Service_Gmail $service Authorized Gmail API instance.      * @param  string $strEmail \u041f\u043e\u0447\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f      * @param  array $arrIDs \u043c\u0430\u0441\u0441\u0438\u0432 ID \u043f\u0438\u0441\u0435\u043c \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 listMessageIDs      * @throws Exception      *\/     function deleteMessages(Google_Service_Gmail $service, string $strEmail, array $arrIDs){         \/\/ \u0420\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u043d\u0430 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e 1000 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 batchDelete         $arrParts = array_chunk($arrIDs, 999);         if (count($arrParts)){             foreach ($arrParts as $arrPartIDs){                 try{                     \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0443\u0434\u0430\u043b\u044f\u0435\u043c\u044b\u0445 \u043f\u0438\u0441\u0435\u043c                     $objBatchDeleteMessages = new Google_Service_Gmail_BatchDeleteMessagesRequest();                     \/\/ \u041d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u0443\u0434\u0430\u043b\u044f\u0435\u043c\u044b\u0435 \u043f\u0438\u0441\u044c\u043c\u0430                     $objBatchDeleteMessages-&gt;setIds($arrPartIDs);                     \/\/ \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u0445                     $service-&gt;users_messages-&gt;batchDelete($strEmail,$objBatchDeleteMessages);                 }catch (Exception $e) {                     throw new \\Exception('\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 deleteMessages: '.$e-&gt;getMessage());                 }             }         }     }     \/\/ ---------------------------------------------------------------------------------------------      \/**      * \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 get      *      * @param  Google_Service_Gmail $service Authorized Gmail API instance.      * @param  string $strEmail \u041f\u043e\u0447\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f      * @param  string $strMessageID ID \u043f\u0438\u0441\u044c\u043c\u0430      * @param  string $strFormat The format to return the message in.      * Acceptable values are:      * &quot;full&quot;: Returns the full email message data with body content parsed in the payload field; the raw field is not used. (default)      * &quot;metadata&quot;: Returns only email message ID, labels, and email headers.      * &quot;minimal&quot;: Returns only email message ID and labels; does not return the email headers, body, or payload.      * &quot;raw&quot;: Returns the full email message data with body content in the raw field as a base64url encoded string; the payload field is not used.      * @param  array $arrMetadataHeaders When given and format is METADATA, only include headers specified.      * @return  object Message      * @throws Exception      *\/     function getMessage(Google_Service_Gmail $service, string $strEmail, string $strMessageID, string $strFormat = 'full', array $arrMetadataHeaders = array()){         $arrOptionalParams = array(             'format' =&gt; $strFormat \/\/ \u0424\u043e\u0440\u043c\u0430\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043f\u0438\u0441\u044c\u043c\u043e         );         \/\/ \u0415\u0441\u043b\u0438 \u0444\u043e\u0440\u043c\u0430\u0442 - metadata, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438         if (($strFormat == 'metadata') and count($arrMetadataHeaders))             $arrOptionalParams['metadataHeaders'] = implode(',',$arrMetadataHeaders);          try{             $objMessage = $service-&gt;users_messages-&gt;get($strEmail, $strMessageID,$arrOptionalParams);             return $objMessage;         }catch (Exception $e) {             throw new \\Exception('\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 getMessage: '.$e-&gt;getMessage());         }     }     \/\/ ---------------------------------------------------------------------------------------------      \/**      * \u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0442\u043e\u043a, \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c \u044f\u0449\u0438\u043a\u0435      *      * @param  Google_Service_Gmail $service Authorized Gmail API instance.      * @param  string $strEmail \u041f\u043e\u0447\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f      * @return  object $objLabels - \u043e\u0431\u044a\u0435\u043a\u0442 - \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0442\u043e\u043a      * @throws Exception      *\/     function listLabels(Google_Service_Gmail $service, string $strEmail){         try{             $objLabels = $service-&gt;users_labels-&gt;listUsersLabels($strEmail);             return $objLabels;         }catch (Exception $e) {             throw new \\Exception('\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 listLabels: '.$e-&gt;getMessage());         }     }     \/\/ ---------------------------------------------------------------------------------------------      \/**      * \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043c\u0435\u0442\u043a\u0443 (\u0444\u043b\u0430\u0433) \u043a \u043f\u0438\u0441\u044c\u043c\u0443      *      * @param  Google_Service_Gmail $service Authorized Gmail API instance.      * @param  string $strEmail \u041f\u043e\u0447\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f      * @param  string $strMessageID ID \u043f\u0438\u0441\u044c\u043c\u0430      * @param  array $arrAddLabelIds \u041c\u0430\u0441\u0441\u0438\u0432 ID \u043c\u0435\u0442\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a \u043f\u0438\u0441\u044c\u043c\u0443      * @param  array $arrRemoveLabelIds \u041c\u0430\u0441\u0441\u0438\u0432 ID \u043c\u0435\u0442\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0432 \u043f\u0438\u0441\u044c\u043c\u0435      * @return  object Message - \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u0438\u0441\u044c\u043c\u043e      * @throws Exception      *\/     function modifyLabels(Google_Service_Gmail $service, string $strEmail, string $strMessageID, array $arrAddLabelIds = array(), array $arrRemoveLabelIds = array()){         try{             $objPostBody = new Google_Service_Gmail_ModifyMessageRequest();             $objPostBody-&gt;setAddLabelIds($arrAddLabelIds);             $objPostBody-&gt;setRemoveLabelIds($arrRemoveLabelIds);             $objMessage = $service-&gt;users_messages-&gt;modify($strEmail,$strMessageID,$objPostBody);             return $objMessage;         }catch (Exception $e) {             throw new \\Exception('\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 modifyLabels: '.$e-&gt;getMessage());         }     }     \/\/ ---------------------------------------------------------------------------------------------  } <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0441 Gmail \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e getService($strEmail) \u043a\u043b\u0430\u0441\u0441\u0430 GmailAPI, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u00ab\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u00bb \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u043c \u044f\u0449\u0438\u043a\u043e\u043c $strEmail. \u0414\u0430\u043b\u0435\u0435 \u044d\u0442\u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u043b\u044e\u0431\u0443\u044e \u0434\u0440\u0443\u0433\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u0443\u0436\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u044b\u0445 \u043d\u0430\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 GmailAPI \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438:<\/p>\n<ul>\n<li>listMessageIDs \u2014 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043f\u0438\u0441\u044c\u043c\u0430 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u0445 ID (\u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u0430\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e listUsersMessages Gmail API \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0438\u0441\u0435\u043c \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430),<\/li>\n<li>deleteMessages \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043f\u0438\u0441\u044c\u043c\u0430 \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u043d\u0435\u0451 ID (\u0444\u0443\u043d\u043a\u0446\u0438\u044f batchDelete API Gmail \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 1000 \u043f\u0438\u0441\u0435\u043c \u0437\u0430 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0445\u043e\u0434, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e ID \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u043f\u043e 999 \u043f\u0438\u0441\u0435\u043c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437),<\/li>\n<li>getMessage \u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u0441\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438 \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u0432 \u043d\u0435\u0451 ID,<\/li>\n<li>listLabels \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u043b\u0430\u0433\u043e\u0432 \u0432 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c \u044f\u0449\u0438\u043a\u0435 (\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0435\u0451, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c ID \u0444\u043b\u0430\u0433\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u0432 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u044f\u0449\u0438\u043a\u0430, \u0438 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0443\u0436\u043d\u044b\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c)<\/li>\n<li>modifyLabels \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0444\u043b\u0430\u0433\u0438 \u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044e<\/li>\n<\/ul>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u043f\u0438\u0441\u0435\u043c \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u0430\u0445. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u043c\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043f\u0438\u0441\u044c\u043c\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0451 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043d\u0435\u0439 \u043d\u0430\u0437\u0430\u0434 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u0438\u0448\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0439 cron&#8217;\u043e\u043c:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u043f\u0438\u0441\u0435\u043c<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"php\">&lt;?php \/**  * \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u043f\u0438\u0441\u044c\u043c\u0430 \u0432 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u0430\u0445 Gmail  * \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0438 \u0435\u0433\u043e \u043a\u043b\u044e\u0447  *\/ require __DIR__ .'\/..\/general\/config\/config.php'; \/\/ \u041e\u0431\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 require __DIR__ .'\/..\/vendor\/autoload.php'; \/\/ \u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442  \/\/ \u0417\u0430\u0434\u0430\u0451\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0434\u043d\u0435\u0439 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0447\u0442\u044b \u0432 \u044f\u0449\u0438\u043a\u0430\u0445 $arrMailBoxesForClean = array(     'a@domain.com' =&gt; 30,     'b@domain.com' =&gt; 30,     'c@domain.com' =&gt; 7,     'd@domain.com' =&gt; 7,     'e@domain.com' =&gt; 7,     'f@domain.com' =&gt; 1 );  $arrErrors = array(); \/\/ \u041c\u0430\u0441\u0441\u0438\u0432 \u043e\u0448\u0438\u0431\u043e\u043a $objGmailAPI = new GmailAPI(); \/\/ \u041a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 GMail  \/\/ \u041f\u0440\u043e\u0445\u043e\u0434\u0438\u043c \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435 \u043f\u0438\u0441\u044c\u043c\u0430 foreach ($arrMailBoxesForClean as $strEmail =&gt; $intDays) {     try{         \/\/ \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c\u0443 \u044f\u0449\u0438\u043a\u0443         $service = $objGmailAPI-&gt;getService($strEmail);         \/\/ \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043f\u0438\u0441\u0435\u043c \u0432 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c \u044f\u0449\u0438\u043a\u0435         $arrParams = array('before' =&gt; date('Y\/m\/d', (time() - 60 * 60 * 24 * $intDays)));         \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0438\u0441\u0435\u043c, \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f         $arrIDs = $objGmailAPI-&gt;listMessageIDs($service,$strEmail,$arrParams);         \/\/ \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u043f\u0438\u0441\u044c\u043c\u0430 \u043f\u043e \u0438\u0445 ID \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 $arrIDs         if (count($arrIDs)) $objGmailAPI-&gt;deleteMessages($service,$strEmail,$arrIDs);         \/\/ \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435         unset($service,$arrIDs);     }catch (Exception $e) {         $arrErrors[] = $e-&gt;getMessage();     } }  if (count($arrErrors)){     $strTo = 'my_email@domain.com';     $strSubj = '\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0441\u0442\u0430\u0440\u044b\u0445 \u043f\u0438\u0441\u0435\u043c \u0438\u0437 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432';     $strMessage = '\u041f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0441\u0442\u0430\u0440\u044b\u0445 \u043f\u0438\u0441\u0435\u043c \u0438\u0437 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438:'.         '&lt;ul&gt;&lt;li&gt;'.implode('&lt;\/li&gt;&lt;li&gt;',$arrErrors).'&lt;\/li&gt;&lt;\/ul&gt;'.         '&lt;br\/&gt;URL: '.filter_input(INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_URL);     $objMailSender = new mailSender();     $objMailSender-&gt;sendMail($strTo,$strSubj,$strMessage); } <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c\u0443 \u044f\u0449\u0438\u043a\u0443, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0442\u0430\u0440\u044b\u0435 \u043f\u0438\u0441\u044c\u043c\u0430 \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0438\u0445.<\/p>\n<p>  \u0417\u0430\u0434\u0430\u0447\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u0434\u043b\u044f \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0438\u0441\u044c\u043c\u0430\u0445 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0438 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0438\u0441\u0435\u043c<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"php\">&lt;?php \/*  * \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u044f\u0449\u0438\u043a\u0443 a@domain.com  * \u0411\u0435\u0440\u0451\u043c \u0441 \u043d\u0435\u0433\u043e \u043f\u0438\u0441\u044c\u043c\u0430 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u0448\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b: \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c: mailer-daemon@googlemail.com  * \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0435 \u044f\u0449\u0438\u043a\u0438 \u0432 \u044d\u0442\u0438\u0445 \u043f\u0438\u0441\u044c\u043c\u0430\u0445. \u0415\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c \u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 b@domain.com  * \u043f\u0438\u0441\u044c\u043c\u043e \u043e\u0431 \u044d\u0442\u043e\u043c  *\/ require __DIR__ .'\/..\/general\/config\/config.php'; \/\/ \u041e\u0431\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 require __DIR__ .'\/..\/vendor\/autoload.php'; \/\/ \u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442  $strEmail = 'a@domain.com'; $strLabelID = 'Label_2399611988534712153'; \/\/ \u0424\u043b\u0430\u0433 reportProcessed - \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0438\u0441\u044c\u043c\u0430  \/\/ \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u044b\u0431\u043e\u0440\u043a\u0438 $arrParams = array(     'from' =&gt; 'mailer-daemon@googlemail.com', \/\/ \u041f\u0438\u0441\u044c\u043c\u0430 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0441 \u044d\u0442\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430     'in' =&gt; 'inbox', \/\/ \u0412\u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445     'after' =&gt; date('Y\/m\/d', (time() - 60 * 60 * 24)), \/\/ \u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0441\u0443\u0442\u043a\u0438     'has' =&gt; 'nouserlabels' \/\/ \u0411\u0435\u0437 \u0444\u043b\u0430\u0433\u0430 );  $arrErrors = array(); \/\/ \u041c\u0430\u0441\u0441\u0438\u0432 \u043e\u0448\u0438\u0431\u043e\u043a $objGmailAPI = new GmailAPI(); \/\/ \u041a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 GMail $arrClientEmails = array(); \/\/ \u041c\u0430\u0441\u0441\u0438\u0432 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435  try{     \/\/ \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c\u0443 \u044f\u0449\u0438\u043a\u0443     $service = $objGmailAPI-&gt;getService($strEmail);     \/\/ \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0451\u043c \u043e\u0442\u0447\u0451\u0442\u044b \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0441\u0443\u0442\u043a\u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0438\u0441\u044c\u043c\u0430 \u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b     $arrIDs = $objGmailAPI-&gt;listMessageIDs($service,$strEmail, $arrParams);     \/\/ \u0414\u043b\u044f \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043f\u0438\u0441\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 'X-Failed-Recipients', \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u044b\u0442\u0430\u043b\u043e\u0441\u044c \u0431\u044b\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043f\u0438\u0441\u044c\u043c\u043e     if (count($arrIDs)){         foreach ($arrIDs as $strMessageID){             \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0438\u0441\u044c\u043c\u0430             $objMessage = $objGmailAPI-&gt;getMessage($service,$strEmail,$strMessageID,'metadata',array('X-Failed-Recipients'));             \/\/ \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043f\u0438\u0441\u044c\u043c\u0430             $arrHeaders = $objMessage-&gt;getPayload()-&gt;getHeaders();             \/\/ \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0439             foreach ($arrHeaders as $objMessagePartHeader){                 if ($objMessagePartHeader-&gt;getName() == 'X-Failed-Recipients'){                     $strClientEmail = mb_strtolower(trim($objMessagePartHeader-&gt;getValue()), 'UTF-8');                     if (!empty($strClientEmail)) {                         if (!in_array($strClientEmail, $arrClientEmails)) $arrClientEmails[] = $strClientEmail;                     }                     \/\/ \u041f\u043e\u043c\u0435\u0447\u0430\u0435\u043c \u043f\u0438\u0441\u044c\u043c\u043e \u0444\u043b\u0430\u0433\u043e\u043c reportProcessed, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437                     $objGmailAPI-&gt;modifyLabels($service,$strEmail,$strMessageID,array($strLabelID));                 }             }         }     }     unset($service,$arrIDs,$strMessageID); }catch (Exception $e) {     $arrErrors[] = $e-&gt;getMessage(); }  \/\/ \u0415\u0441\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0438\u0445 \u0432 \u0431\u0430\u0437\u0435 if (count($arrClientEmails)) {     $objClients = new clients();     \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u0441\u0435 email \u0432\u0441\u0435\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432     $arrAllClientsEmails = $objClients-&gt;getAllEmails();      foreach ($arrClientEmails as $strClientEmail){         $arrUsages = array();         foreach ($arrAllClientsEmails as $arrRow){             if (strpos($arrRow['email'], $strClientEmail) !== false) {                 $arrUsages[] = '\u043a\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 email \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c &quot;&lt;a href=&quot;'.MANAGEURL.'?m=admin&amp;sm=clients&amp;edit='.$arrRow['s_users_id'].'&quot;&gt;'.$arrRow['name'].'&lt;\/a&gt;&quot;';             }             if (strpos($arrRow['email2'], $strClientEmail) !== false) {                 $arrUsages[] = '\u043a\u0430\u043a \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 email \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c &quot;&lt;a href=&quot;'.MANAGEURL.'?m=admin&amp;sm=clients&amp;edit='.$arrRow['s_users_id'].'&quot;&gt;'.$arrRow['name'].'&lt;\/a&gt;&quot;';             }             if (strpos($arrRow['site_user_settings_contact_email'], $strClientEmail) !== false) {                 $arrUsages[] = '\u043a\u0430\u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u044b\u0439 email \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c &quot;&lt;a href=&quot;'.MANAGEURL.'?m=admin&amp;sm=clients&amp;edit='.$arrRow['s_users_id'].'&quot;&gt;'.$arrRow['name'].'&lt;\/a&gt;&quot;';             }         }         $intUsagesCnt = count($arrUsages);         if ($intUsagesCnt &gt; 0){             $strMessage = '\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0438\u0441\u044c\u043c\u043e \u0441 \u0441\u0430\u0439\u0442\u0430 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b &lt;span style=&quot;color: #000099;&quot;&gt;'.$strClientEmail.'&lt;\/span&gt;&lt;br\/&gt;                 \u042d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f';             if ($intUsagesCnt == 1){                 $strMessage .= ' '.$arrUsages[0].'&lt;br\/&gt;';             }else{                 $strMessage .= ':&lt;ul&gt;';                 foreach ($arrUsages as $strUsage){                     $strMessage .= '&lt;li&gt;'.$strUsage.'&lt;\/li&gt;';                 }                 $strMessage .= '&lt;\/ul&gt;';             }             $strMessage .= '&lt;br\/&gt;\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b.&lt;br\/&gt;&lt;br\/&gt;                 \u042d\u0442\u043e \u043f\u0438\u0441\u044c\u043c\u043e \u0431\u044b\u043b\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0439\u0442\u0435 \u043d\u0430 \u043d\u0435\u0433\u043e';             if (empty($objMailSender)) $objMailSender = new mailSender();             $objMailSender-&gt;sendMail('b@domain.com','\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 email \u043a\u043b\u0438\u0435\u043d\u0442\u0430',$strMessage);         }     } }  if (count($arrErrors)){     $strTo = 'my_email@domain.com';     $strSubj = '\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0438\u0441\u044c\u043c\u0430\u0445';     $strMessage = '\u041f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0438\u0441\u044c\u043c\u0430\u0445 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438:'.         '&lt;ul&gt;&lt;li&gt;'.implode('&lt;\/li&gt;&lt;li&gt;',$arrErrors).'&lt;\/li&gt;&lt;\/ul&gt;'.         '&lt;br\/&gt;URL: '.filter_input(INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_URL);     if (empty($objMailSender)) $objMailSender = new mailSender();     $objMailSender-&gt;sendMail($strTo,$strSubj,$strMessage); } <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u042d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u043f\u0435\u0440\u0432\u044b\u0439, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c\u0443 \u044f\u0449\u0438\u043a\u0443, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0437 \u043d\u0435\u0433\u043e \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0438\u0441\u044c\u043c\u0430 (\u043e\u0442\u0447\u0451\u0442\u044b \u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445) \u0431\u0435\u0437 \u0444\u043b\u0430\u0433\u0430, \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0438\u0441\u044c\u043c\u0435 \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u044b\u0442\u0430\u043b\u043e\u0441\u044c \u0431\u044b\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043f\u0438\u0441\u044c\u043c\u043e \u0438 \u043c\u0430\u0440\u043a\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u043e \u043f\u0438\u0441\u044c\u043c\u043e \u0444\u043b\u0430\u0433\u043e\u043c \u00ab\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e\u00bb. \u0417\u0430\u0442\u0435\u043c \u0443\u0436\u0435 \u0441 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0443.<\/p>\n<p>  \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 <a href=\"https:\/\/github.com\/SexyGrandma\/GmailAPI\" rel=\"nofollow\">GitHub<\/a>.<\/p>\n<p>  \u0412\u043e\u0442 \u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u044f \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u0432\u0435\u0434\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435! \u0415\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u0437\u0430\u0449\u0438\u043f\u0430\u043b\u043e \u0432 \u0433\u043b\u0430\u0437\u0430\u0445 \u043e\u0442 \u043c\u043e\u0435\u0433\u043e \u043a\u043e\u0434\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0432\u0435\u0440\u043d\u0438\u0442\u0435 \u0441\u043f\u043e\u0439\u043b\u0435\u0440 \u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0441\u0432\u043e\u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u2014 \u0431\u0443\u0434\u0443 \u0440\u0430\u0434 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u0440\u0438\u0442\u0438\u043a\u0435.<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/516408\/\"> https:\/\/habr.com\/ru\/post\/516408\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/516408\/\">\u041e\u043a\u0430\u0437\u0430\u0432\u0448\u0438\u0441\u044c \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u0447\u0438\u043a\u043e\u0432, \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0441 15 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2021 \u0433\u043e\u0434\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432 Gmail \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 OAuth, \u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u044e &quot;<a href=\"https:\/\/habr.com\/ru\/post\/481786\/\">Google \u0445\u043e\u0440\u043e\u043d\u0438\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 PHP IMAP<\/a>&quot; \u0438 <s>\u0437\u0430\u0433\u0440\u0443\u0441\u0442\u0438\u043b<\/s> \u043d\u0430\u0447\u0430\u043b \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e \u0437\u0430\u043c\u0435\u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f PHP IMAP \u0432 \u0441\u0432\u043e\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0430 API Google. \u0412\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0431\u044b\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043e\u0442\u0432\u0435\u0442\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043e\u0434\u043d\u043e \u043d\u0430\u0446\u0430\u0440\u0430\u043f\u0430\u043b \u043c\u0430\u043d\u0443\u0430\u043b.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-309002","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/309002","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=309002"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/309002\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=309002"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=309002"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=309002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}